Java+Uiautomator 下滑找到想要的内容自动点击

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ricky_yangrui/article/details/89034744

进入到手机的页面,假如直接有这个元素,我们就可以直接点击,假如没有呢,就点击不了,这个时候就需要我们先滑动找到元素,然后再次的进行点击操作。

(由于我的写法是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);
}

猜你喜欢

转载自blog.csdn.net/ricky_yangrui/article/details/89034744