我正在使用uiautomator工具为我的应用编写一些自动测试。
以下是有问题的代码:
UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
appViews.setAsHorizontalList(); // works on API 17+
UiObject settingsApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Settings");
settingsApp.clickAndWaitForNewWindow();
当我在KitKat手机上运行时,手机会进入主屏幕,然后点击“应用”,然后选择“应用程序标签”(为清晰起见,此部分代码已从此帖中省略)然后开始寻找“设置”图标 - 它向左水平滚动一次,“已下载”选项卡被选中,然后向右滚动,“设置”不存在,因此测试失败。
然后我拿起了手机,再向左滚动,“设置”就是。
我的问题是为什么它没有滚动浏览所有页面,直到找到“设置”的位置?
答案 0 :(得分:1)
您可以通过UiScrollable.setMaxSearchSwipes()设置最适合您需要的滑动次数,它会调整在搜索子元素时执行滚动操作时允许的滚动次数。
答案 1 :(得分:0)
我在这里查看了UIScrollable的文档:
我找到了这个方法:
scrollBackward()
所以我决定以这种方式照顾自己的问题:
boolean settingsFound = false;
while(!settingsFound) {
appViews.scrollBackward();
try {
UiObject settingsApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Settings", true);
settingsApp.clickAndWaitForNewWindow();
settingsFound = true;
} catch (Exception e){
e.printStackTrace();
}
}
此代码一直向右滚动,直到“设置”可见,然后点击它。