如何在Espresso测试中向下滚动至ScrollView底部?谢谢!
如果您需要在ScrollView底部找到一个视图,并根据其进行匹配,则只需在需要显示它之前对其执行scrollTo()
操作。
onView(withId(R.id.onBottomOfScrollView))
.perform(scrollTo(), click());
注意:如果视图已经显示,scrollTo将不起作用,因此您可以在视图已显示的情况下安全地使用它。对我来说,在使用嵌套滚动视图时,我只需要向上滑动(如果你想往下滑)...这里是一个示例调用:
onView(withId(R.id.nsv_container))
.perform(swipeUp());
为了更全面(根据Morozov的答案),你可以传递自定义的ViewAction
,而不是scrollTo()
,这允许使用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))));
perform(swipeDown())
,这拯救了我的一天! - Thuy Trinh