我有一个带数据输入表格的长垂直屏幕。我需要swipeUp(向下滚动)此屏幕,直到屏幕上显示一个表单字段。 我尝试在屏幕上方较高的元素上使用 swipeUp()和 scrollTo() ViewActions,但它没有帮助我,这些元素隐藏在屏幕上擦了之后。
答案 0 :(得分:2)
当今的惯用方法是使用RepeatActionUntilViewState
。例如,以下内容将在ID为largeElementId
的元素上向上滑动10次,直到用户看到带有文本“目标文本”的视图为止
onView(withId(R.id.largeElementId)).perform(repeatedlyUntil(swipeUp(),
hasDescendant(withText("Target text")),
10));
答案 1 :(得分:0)
它应该是这样的:
boolean found = false;
int i = 0;
while (!found && i < MAX_SWIPES) {
onView(withId(R.id.largeElementId)).perform(swipeUp());
SystemClock.sleep(500);
try {
uiElementToSearch.check(matches(isCompletelyDisplayed()));
found = true;
} catch (Exception e) {
// The search continues
}
i++;
}
if (!found) {
Assert.fail("The element has not been found.");
}