Comment est-il possible de faire défiler le test ScrollView in Espresso vers le bas? Merci!
Si, au bas de la vue de défilement, vous devez rechercher une vue et lui associer un élément, effectuez simplement l'action scrollTo()
dessus, avant toute autre action nécessitant son affichage.
onView(withId(R.id.onBottomOfScrollView))
.perform(scrollTo(), click());
Remarque: scrollTo n'aura aucun effet si la vue est déjà affichée. Vous pouvez donc l'utiliser en toute sécurité dans les cas où la vue est affichée.
pour moi lors de l'utilisation de nestedScrollview, je viens de glisser (si vous voulez descendre) .. voici un exemple d'appel:
onView(withId(R.id.nsv_container))
.perform(swipeUp());
Pour être complet (basé sur la réponse de Morozov), vous pouvez passer un ViewAction
personnalisé au lieu de scrollTo()
, ce qui permet d’utiliser NestedScrollView
:
ViewAction customScrollTo = new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
isAssignableFrom(ScrollView.class),
isAssignableFrom(HorizontalScrollView.class),
isAssignableFrom(NestedScrollView.class)))
);
}
@Override
public String getDescription() {
return null;
}
@Override
public void perform(UiController uiController, View view) {
new ScrollToAction().perform(uiController, view);
}
};
Et utilisez-le comme ceci:
onView(withId(R.id.onBottomOfScrollView)).perform(customScrollTo, click());
Aussi, vous pouvez essayer:
public Matcher<View> getConstraints() {
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
isAssignableFrom(ScrollView.class), isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class))));
Si vous avez une vue dans Android.support.v4.widget.NestedScrollView au lieu de scrollView, scrollTo () ne fonctionne pas.