uiautomator - 无法让ListView滚动,因为我在每个列表项中验证文本.当我点击屏幕上的最后一项时,它就失败了

Tim*_*and 6 android android-listview android-uiautomator

我正在尝试验证ListView中每个列表项中的文本并逐个向下滚动,以便我可以验证每个...但由于某种原因,我无法让它继续滚动列表验证每个元素.有没有人有任何运气自动化这种行动.这是我最接近的.如果这还不够,请告诉我:

     UiScrollable scrollableList = new UiScrollable(new UiSelector()
        .resourceId("com.example.app:id/listView")
                .className(android.widget.ListView.class.getName())
                .index(3));

for ( i = 0; i < 100; i++ ) {
    UiObject listItem = scrollableList.getChildByText(new UiSelector()
        .className("android.widget.RelativeLayout")
        .instance(i), "Text Title");

    UiObject textBody = listItem.getFromParent(new UiSelector()
        .resourceId("com.example.app:id/textBody"));

    System.out.println("Validating: " + textBody.getText());
Run Code Online (Sandbox Code Playgroud)

当时屏幕上只能看到5个listItem,因此当它尝试到达6时它会失败,因为它不能:

一个. 它不会尝试向前滚动以获得列表中的下一个
b. 即使它确实向前滚动以获得列表中的下一个,实例值将减少到5,而不是增加到6.

我在没有.instance()方法的情况下尝试过它,但在这种情况下,它只是反复遍历列表中的第一个项目而不进行到项目2,3,4等.

如果有人遇到过这个问题,我会很乐意反馈.

Sun*_*ntu -2

我已经在 python 中实现了相同的功能,而不是使用 java。我正在编写下面的逻辑,看看它是否对您有帮助。

while(i<100):
   self.d.press('down')
   print self.d(resourceID='android:id/text1').text
Run Code Online (Sandbox Code Playgroud)

此循环向下滚动最多 100 个元素,并返回下拉列表中的每个元素。