Saltar al contenido

¿Cómo hacer clic en los elementos de la barra de acción al probar con Android Espresso?

Solución:

El espresso tiene openActionBarOverflowOrOptionsMenu(Context context) método para abrir el menú de la barra de acciones. Debe ponerlo antes de su acción de prueba en los elementos del menú.

import static android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu;

@Test
public void testClickInsertItem() {
    openActionBarOverflowOrOptionsMenu(InstrumentationRegistry.getInstrumentation().getTargetContext());
    onView(withId(R.id.action_insert)).perform(click());
}

Espero que pueda ayudar a alguien con collaspingtoolbar

Tengo el siguiente diseño de menú.

barra de herramientas que se contrae

ingrese la descripción de la imagen aquí

Después de usar Espresso Recorder, descubrí que el botón de menú se hace clic con withContentDescription función

ingrese la descripción de la imagen aquí

Yo también usé ToolBar y CollapsingToolbarLayout en el xml, lo que hice en las pruebas fue usar el withContentDescription para abrir el menú.

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
    android:id="@+id/action_more"
    android:icon="@drawable/ic_more_vert_white_24dp"
    android:title="@string/menu_action_more"
    app:showAsAction="always">
    <menu>
      <item
        android:id="@+id/action_login"
        android:icon="@drawable/ic_account_circle_black_24dp"
        android:orderInCategory="100"
        android:title="@string/menu_login" />
      <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_settings_black_24dp"
        android:orderInCategory="100"
        android:title="@string/menu_settings" />
      <item
        android:id="@+id/action_about"
        android:icon="@drawable/ic_info_black_24dp"
        android:orderInCategory="100"
        android:title="@string/menu_about" />
    </menu>
  </item>
</menu>

MainTest.java

      @Test
      public void menu_Login() {        
        onView(withContentDescription(R.string.menu_action_more))
            .perform(click());
        onView(withText("Login")).perform(click());
        intended(hasComponent(LoginActivity.class.getName()));
      }
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *