youtubers tesis sobre sirve resumida que para investigaciones investigacion historia caracteristicas android testing android-espresso

android - tesis - Haga clic en el ícono de inicio con Espresso



tesis sobre youtube pdf (10)

Estoy tratando de hacer clic en el icono de inicio en algunas pruebas de Espresso a través de:

onView(withId(android.R.id.home)).perform(click());

Esto funciona bien para Android> 3.0, pero falla para las versiones anteriores ya que no parece que appcompat use esta identificación para este elemento. ¿Cuál es un buen enfoque para hacer lo que quiero hacer?


Añada onbackpress en su actividad y use:

onView(withContentDescription("Navigate up")).perform(click());


Encontré una solución real a este problema. Al usar el hierarchyviewer encontré que la barra de herramientas se ve así:

Esto significa que podemos hacer coincidir el icono de la hamburguesa (no el botón Atrás) de esta manera:

onView(withContentDescription("Open navigation")).perform(click());

Pero una mejor solución para mí fue descubrir que el ícono de la hamburguesa es el único ImageButton y una vista directa del niño de la barra de herramientas v7. Así que escribí un método de ayuda para que coincida:

public static Matcher<View> androidHomeMatcher() { return allOf( withParent(withClassName(is(Toolbar.class.getName()))), withClassName(anyOf( is(ImageButton.class.getName()), is(AppCompatImageButton.class.getName()) ))); } @Test public void clickHamburgerIcon() throws Exception { onView(androidHomeMatcher()).perform(click()); // ... }

Esta solución es mejor porque debe coincidir con la vista, sin importar la configuración regional que use en su prueba. :-)

EDITAR: Tenga en cuenta que la barra de herramientas podría ser android.support.v7.widget.Toolbar o android.widget.Toolbar, ¡dependiendo de su caso de uso!

EDITAR: La versión 24.2.0 de support lib usa AppCompatImageButton en lugar de ImageButton, así que también lo agregué.

EDITAR: tiene que importar los métodos correctos para que esto funcione. Aquí están las importaciones usadas:

import static android.support.test.espresso.matcher.ViewMatchers.withClassName; import static android.support.test.espresso.matcher.ViewMatchers.withParent; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.is;


Estaba teniendo problemas con "Navigate up" en un emulador, esto funcionó para mí:

onView(isRoot()).perform(ViewActions.pressMenuKey());


Para no depender de la configuración regional de la aplicación, puede usar el código de Matt Logan al reemplazar "Navegar hacia arriba" con R.string.abc_action_bar_up_description:

onView(withContentDescription(R.string.abc_action_bar_up_description)).perform(click());

Esto me ayudó mucho porque tengo una aplicación en más de 5 idiomas y tuve que actuar así.


Para retroceder Vista:

onView(isRoot()).perform(pressBack());


Tal vez puedas llamar:

pressKey(KeyEvent.KEYCODE_HOME);


Tuve problemas para regresar de una Actividad a otra, pero luego encontré acciones de nivel superior:

Espresso.pressBack();


Use el withContentDescription() Matcher :

onView(withContentDescription("Navigate up")).perform(click());


Espresso.pressBack();

O

onView(withContentDescription("Navigate up")).perform(click());


public static Matcher<View> navigationIconMatcher() { return allOf( isAssignableFrom(ImageButton.class), withParent(isAssignableFrom(Toolbar.class))); } @Test public void clickHamburgerIcon() throws Exception { onView(navigationIconMatcher()).perform(click()); // ... }

esto funciona siempre!