Espresso:如何滚动到ScrollView的底部

时间:2015-05-22 02:03:39

标签: android android-espresso

如何在Espresso测试中向下滚动到ScrollView的底部? 谢谢!

4 个答案:

答案 0 :(得分:31)

如果在ScrollView的底部,您需要找到一个视图并对其进行匹配,那么只需对其执行scrollTo()操作,然后再执行需要显示的任何其他操作。

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

注意:如果已经显示视图,scrollTo将无效,因此您可以在显示视图时安全地使用它

答案 1 :(得分:9)

对我来说当使用nestedScrollview我只是swipeUp(如果你想要下去)..这是一个示例调用:

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

答案 2 :(得分:6)

为了完整性(基于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());

答案 3 :(得分:1)

你也可以尝试:

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()不起作用。