UIAutomator根据索引点击listview

时间:2013-12-24 07:58:34

标签: android listview uiautomator

我正在尝试使用一般方法实现一个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");
   }
}

2 个答案:

答案 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")
                )
)