web-dev-qa-db-ja.com

Espresso:ScrollViewの一番下までスクロールする方法

EspressoテストでScrollViewの一番下までスクロールするにはどうすればよいですか?ありがとう!

18
Kid24

ScrollViewの下部でビューを見つけてそれに一致する必要がある場合は、そのビューに対してscrollTo()アクションを実行してから、ビューを表示する必要がある他のアクションを実行します。

onView(withId(R.id.onBottomOfScrollView))
    .perform(scrollTo(), click());

注:scrollToは、ビューがすでに表示されている場合は効果がないため、ビューが表示されている場合でも安全に使用できます。

35
appoll

nestedScrollviewを使用しているとき、私はスワイプアップします(下に移動したい場合)。ここに例の呼び出しがあります:

onView(withId(R.id.nsv_container))
                .perform(swipeUp());
13
j2emanue

完全を期すために(モロゾフの回答に基づく)、scrollTo()の代わりにViewActionを使用できるカスタム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);
    }
};

次のように使用します。

onView(withId(R.id.onBottomOfScrollView)).perform(customScrollTo, click());
10
Ixx

また、あなたは試すことができます:

public Matcher<View> getConstraints() {
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
        isAssignableFrom(ScrollView.class), isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class))));

ScrollViewではなくAndroid.support.v4.widget.NestedScrollView内にビューがある場合、scrollTo()は機能しません。

1
Morozov