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

Android uiautomator-当我验证每个列表项中的文本时,无法使ListView滚动。当我点击屏幕上的最后一项时,它就失败了,android,android-listview,android-uiautomator,Android,Android Listview,Android Uiautomator,我正在尝试验证我的ListView中每个列表项中的文本,并一个接一个地向下滚动,以便验证每个列表项。。。但由于某些原因,我无法让它继续滚动列表,验证每个元素。有没有人有幸自动执行这种操作。这是我能找到的最接近的方法。 如果这还不够,请告诉我: UiScrollable scrollableList = new UiScrollable(new UiSelector() .resourceId("com.example.app:id/listView")

我正在尝试验证我的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());
UiScrollable scrollableList=新的UiScrollable(新的UiSelector()
.resourceId(“com.example.app:id/listView”)
.className(android.widget.ListView.class.getName())
.指数(3));
对于(i=0;i<100;i++){
UiObject listItem=scrollableList.getChildByText(新的UiSelector()
.className(“android.widget.RelativeLayout”)
.实例(i),“文本标题”);
UiObject textBody=listItem.getFromParent(新UiSelector()
.resourceId(“com.example.app:id/textBody”);
System.out.println(“验证:”+textBody.getText());
当时屏幕上只有5个listItems可见,因此当它尝试访问数字6时失败,因为:

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

我在没有.instance()方法的情况下尝试了它,但在这种情况下,它只是在列表中的第一项上反复循环,而没有前进到第2、3、4项等


如果有人遇到这个问题,我希望得到反馈。

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

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

while(i在我的例子中,我只想从该页面获取所有值。Android的限制是,您只能处理屏幕上当前可见的对象。
查看此链接,了解移动自动化的Ui Automator限制-
另外,我也试过这个例子-。我也试过这个解决方案,但它对我没用,但你可以试试这个-。
我使用了下面几行代码来解决我的问题

// to print value of visible objects on screen.
List<MobileElement> allTitleElements = ((AndroidDriver<MobileElement>)driver).findElementsByAndroidUIAutomator("new UiSelector().resourceId(\"com.experient.swap:id/editText\")");
System.out.println("Element Count - " + allTitleElements.size());

for(MobileElement element : allTitleElements)
 {
    System.out.println("Text - " + element.getText());
 }
// to click on last element of screen(country in my case) to scroll down page to last object
MobileElement abc = (MobileElement) driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("
                  +"new UiSelector().text(\"Country\"));"));
          abc.click();
//在屏幕上打印可见对象的值。
列出所有标题元素=((AndroidDriver)driver.findElementsByAndroidUIAutomator(“新UiSelector().resourceId(\“com.experient.swap:id/editText\”));
System.out.println(“元素计数-”+所有标题元素.size());
对于(移动元素:所有标题元素)
{
System.out.println(“Text-”+element.getText());
}
//点击屏幕的最后一个元素(我的例子中是国家),向下滚动页面到最后一个对象
MobileElement abc=(MobileElement)driver.findElement(MobileBy.AndroidUIAutomator(“新UiScrollable(新UiSelector()))。scrollIntoView(”
+“新UiSelector().text(\”国家\“);”);
abc.click();