Espresso有滑动操作,我想知道是否可以向左或向右滑动,直到屏幕上显示文字为止。我的意思是如果我有一个包含很多标签的Tab布局,我想执行滑动操作,直到看到具有特定文本的标签
答案 0 :(得分:1)
这可以在一个循环中进行滑动,然后检查此元素在try / catch块中是否可见,直到到达页面视图的末尾或找到该项目。
如果到达了网页浏览的结尾并且未找到该项,那么您可以执行类似 Assert.fail("未找到该元素。");
试试这段代码:
boolean found = false;
int i = 0;
while (!found && i < NUM_PAGES) {
onView(withId(R.id.viewPager)).perform(swipeLeft());
SystemClock.sleep(500);
try {
if (checkElementVisible()) {
found = true;
}
} catch (Exception e) {
// The search continues
}
i++;
}
if (!found) {
Assert.fail("The element has not been found.");
}
答案 1 :(得分:0)
您可以滑动一次并验证是否显示了textView。如果没有,请再次滑动。
或者您可以使用一种方法来验证textview ...并且如果抛出“NoMatchingViewException”,则会滑动。
像这样的东西(没有测试代码):
public static boolean swipeUntilExists(int resourceId) {
final ViewInteraction uiElement = onView(withId(resourceId));
boolean isVisible = false;
while (!isVisible) {
try {
// do swipe here
uiElement.check(matches(isDisplayed()));
isVisible = true;
} catch (NoMatchingViewException e) {
// do nothing here
}
}
return isVisible;
}