Java+Uiautomator 下滑找到想要的内容自动点击
进入到手机的页面,假如直接有这个元素,我们就可以直接点击,假如没有呢,就点击不了,这个时候就需要我们先滑动找到元素,然后再次的进行点击操作。
(由于我的写法是POM写法,page代码就不贴了,大家看思路就可以了)
例子:进入到手机的setting列表,然后找到Biology ID,点击它。
封装一个长列表查询方式:
//封装一个列表查询
public void settingsListItem(String item) throws UiObjectNotFoundException {
if (mDevice.hasObject(By.textContains(item))) {
find(By.textContains(item)).clickAndWait(Until.newWindow(), 3000);
} else {
UiScrollable findItem = new UiScrollable(new UiSelector().className("android.support.v7.widget.RecyclerView"));
findItem.scrollTextIntoView(item);
find(By.textContains(item)).clickAndWait(Until.newWindow(), 3000);
}
}
代码也很简单,就是找这个元素,假如有就点击,没有就滑动找到,然后点击。
代码中有一行className,这个代表的是手机的滚动条
UiScrollable findItem = new UiScrollable(new UiSelector().className("android.support.v7.widget.RecyclerView"));
具体可以看下图,我们直接在weditor中定位到整个settings List的前端代码,然后就可以实现了。
SettingPage代码:
private BySelector biologyIdButtonSelector = By.text("Biology ID");
//在setting界面,进入到Biology ID
public boolean enterBiologyIdList() throws UiObjectNotFoundException {
String biologyIdButton = "Biology ID";
settingsListItem(biologyIdButton);
return mDevice.wait(Until.hasObject(biologyIdButtonSelector), LAUNCH_CALL_PAGE);
}
Case判断:
@Test
public void testSettings_0098_checkEnterBiologyId() throws UiObjectNotFoundException {
//进入Biology ID
boolean isEnterBiologyId = mSettingsPage.enterBiologyIdList();
Assert.assertTrue("enter biology id fail", isEnterBiologyId);
}