web-dev-qa-db-fra.com

Espresso: comment faire défiler vers le bas de ScrollView

Comment est-il possible de faire défiler le test ScrollView in Espresso vers le bas? Merci!

14
Kid24

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.

31
appoll

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());
6
j2emanue

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());
5
Ixx

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.

1
Morozov