我正在尝试使用一般方法实现一个UIAutomator测试用例来执行ListView项目的点击(无论持有listitem的视图组的类型如何)。
目前我有以下代码,但它会一直点击第一项。
public void clickListViewItem(int index) throws UiObjectNotFoundException {
UiObject listview = new UiObject(new UiSelector().className("android.widget.ListView"));
if(index <= listview.getChildCount()){
listview.getChild(new UiSelector().index(index)).click();
}else{
throw new UIObjectNotFoundException("Index is greater than listSize");
}
}
答案 0 :(得分:11)
我使用以下代码,它基于UISelector的可点击属性:
listview.getChild(new UiSelector().clickable(true).index(index)).click();
答案 1 :(得分:1)
开发者页面实现了一种类似的情况,发现here-尽管它假定子项中存在某些识别功能可供选择(例如下面的示例,字符串“ Apps”):>
如果找到多个匹配元素,则将布局层次结构中的第一个匹配元素作为目标UiObject返回。构造UiSelector时,可以将多个属性链接在一起以优化搜索。如果找不到匹配的UI元素,则会引发UiAutomatorObjectNotFoundException。
您可以使用childSelector()方法来嵌套多个UiSelector实例。例如,下面的代码示例演示测试如何指定搜索以在当前显示的UI中找到第一个ListView,然后在该ListView中进行搜索以找到具有文本属性Apps的UI元素。
val appItem: UiObject = device.findObject( UiSelector().className("android.widget.ListView") .instance(0) .childSelector( UiSelector().text("Apps") ) )