如何在Espresso测试中向下滚动到ScrollView的底部?谢谢!
如果在ScrollView的底部,您需要查找视图并对其进行匹配,那么只需在需要显示的任何其他操作之前对其执行scrollTo()
操作。
onView(withId(R.id.onBottomOfScrollView))
.perform(scrollTo(), click());
注意:如果已经显示视图,scrollTo将不起作用,因此您可以在显示视图时安全地使用它
对我来说,当使用nestedScrollview我只是swipeUp(如果你想要下去)..这是一个示例调用:
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))));
如果你在android.support.v4.widget.NestedScrollView中有一个视图而不是scrollView scrollTo()不起作用。