EspressoテストでScrollViewの一番下までスクロールするにはどうすればよいですか?ありがとう!
ScrollViewの下部でビューを見つけてそれに一致する必要がある場合は、そのビューに対してscrollTo()
アクションを実行してから、ビューを表示する必要がある他のアクションを実行します。
onView(withId(R.id.onBottomOfScrollView))
.perform(scrollTo(), click());
注:scrollToは、ビューがすでに表示されている場合は効果がないため、ビューが表示されている場合でも安全に使用できます。
nestedScrollviewを使用しているとき、私はスワイプアップします(下に移動したい場合)。ここに例の呼び出しがあります:
onView(withId(R.id.nsv_container))
.perform(swipeUp());
完全を期すために(モロゾフの回答に基づく)、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());
また、あなたは試すことができます:
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()は機能しません。