如何使用AndroidDriver自动在Chrome中滚动?

时间:2018-11-30 15:25:28

标签: appium appium-android

尝试在像素设备上的android仿真器中自动执行汉堡包菜单。我正在使用Appium并使用android驱动程序进行自动化。我看到scrollTo()已过时,有人知道该怎么做吗?

3 个答案:

答案 0 :(得分:1)

只需使用此简单命令即可使用JAVA中的DesiredCapabilities在appium中滚动。

driver.findElementByAndroidUIAutomator(“ new UiScrollable(new UiSelector())。scrollIntoView(text(\” Your Text \“));”);

希望这会有所帮助

答案 1 :(得分:0)

因此,对此的快速答案是,没有新的方法。据我所知,因为UIAutomator2不允许Appium的驱动程序找到屏幕上没有的元素。我认为UIAutomator2是实现Android 7及更高版本上的设备自动化所必需的。

这意味着在屏幕外时,无法确定元素的方向。因此,如果有人对此有解决方案,我将很高兴听到。

现在,取决于您要自动化的应用程序类型,如果知道它的方向,就可以伪造刷到某个元素。例如,如果您的应用程序仅上下滚动(像许多应用程序一样),则只要您知道该元素是在当前位置之下还是之上,则可以滑动到该位置。这可以通过while循环来完成:

while(elementNotFound) {
    if(findElement(byLocator)) {
        elementNotFound = !elementNotFound;
    }
    else {
        // This is where you would swipe in the direction of where the element is
    }

}

新的刷卡方式是使用TouchAction类。例如,您可以执行以下操作:

(new TouchAction<>(driver)).press(PointOption.point(startX, position.startY)
                           .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
                           .moveTo(PointOption.point(endX, endY))
                           .release()
                           .perform();

或者,您可以将不赞成使用的swipeTo方法与UIAutomator驱动器类型(而不是UIAutomator2)一起使用。再次说明,这仅适用于Android SDK版本较低的设备。

很抱歉,如果这样不能为您提供所需的答案,但是希望至少可以为您提供一种找到所需元素的方法。

答案 2 :(得分:0)

在最新的Appium Java客户端6.1.0中,您可以使用以下代码进行滑动,

new AndroidTouchAction (driver)
  .press (PointOption.point (startX, startY))
  .waitAction (WaitOptions.waitOptions (Duration.ofMillis (1000)))
  .moveTo (PointOption.point (endX, endY))
  .release ()
  .perform ();

这里startXstartYendXendY需要根据您的需要进行计算。

OR

您甚至可以使用我的开源框架Coteafs-Appium v-3.0来滑动,

SliderActivity slide = new SliderActivity (this.androidDevice);
slide.onElement ("Slider")
  .swipe (SwipeDirection.RIGHT, SwipeStartPosition.LEFT, 75);