如何从APPIUM中的脚本滚动列表

Posted

技术标签:

【中文标题】如何从APPIUM中的脚本滚动列表【英文标题】:How to scroll the list from script in APPIUM 【发布时间】:2018-05-26 23:16:03 【问题描述】:

您好,我正在 android 中使用 APPIUM。我需要做的是明智地滚动列表页面。 我尝试了以下操作。

    MobileElement element =(MobileElement)driver.findElement(By.className("android.widget.ListView"));
    javascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, String> scrollObject = new HashMap<>();
    scrollObject.put("direction", "down");
    scrollObject.put("element", ((RemoteWebElement) element).getId());
    js.executeScript("mobile: scrollTo", scrollObject);

这可行,但列表会不断滚动,直到显示最后一个元素。我需要做的是明智地滚动列表页面。

【问题讨论】:

【参考方案1】:

这对我有用。

 List<WebElement> list = driver.findElements(By.xpath("//android.widget.TextView[@resource-id='com.imdb.mobile:id/label']"));

 if (list != null && !list.isEmpty()) 
   WebElement bottomElement = list.get(list.size() - 1);
   WebElement topElement = list.get(0);      
   TouchAction touchAction = newTouchAction(driver).press(bottomElement).moveTo(topElement).release();
   touchAction.perform();
   

【讨论】:

【参考方案2】:

既然它是一个可滚动的列表,如何使用UiScrollable,例如

driver.FindElement(MobileBy.AndroidUIAutomator("new UiScrollable(
    new UiSelector().scrollable(true).instance(0)).scrollIntoView(
    new UiSelector().resourceId(\"" + id + "\").instance(0))"))

更多选项here

【讨论】:

嗨,dmle,感谢您的回复,这也将列表滚动到最后一个元素。我想要的是单击列表的第一个元素做某事按下并单击下一个项目,依此类推,直到最后一个元素。请提供任何建议。 没有看到你的屏幕xml很难帮助你,但如果你有相同属性的元素并使用我以正确的方式发布的方法=>它应该滚动到第一个元素,因为它有@ 987654324@

以上是关于如何从APPIUM中的脚本滚动列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TouchAction 滚动 Appium 1.7.1

使用移动设备滚动日期选择器:appium 中的 selectPickerWheelValue

如何使用Java向下滚动到iOS中appium 1.6.4 beta中的确切元素

如何在appium的菜单栏中向右滚动?

如何使用java在appium中垂直滚动混合应用程序

如何在 Python 中使用 appium 进行滚动