Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Appium 如何使用AndroidDriver在chrome中自动滚动?_Appium_Appium Android - Fatal编程技术网

Appium 如何使用AndroidDriver在chrome中自动滚动?

Appium 如何使用AndroidDriver在chrome中自动滚动?,appium,appium-android,Appium,Appium Android,尝试在像素设备上的android仿真器中自动化汉堡包菜单。我正在使用Appium并使用android驱动程序实现自动化。我看到scrollTo()被弃用了。有人知道怎么做吗?因此,快速回答是,没有新方法。据我所知,这是因为UIAutomator2不允许Appium的驱动程序找到屏幕上没有的元素。UIAutomator2是在Android版本7和high上实现设备自动化所必需的 这意味着当元素离开屏幕时,无法判断它的方向。所以,如果有人能解决这个问题,我很乐意听到 现在,根据您正在自动化的应用程序

尝试在像素设备上的android仿真器中自动化汉堡包菜单。我正在使用Appium并使用android驱动程序实现自动化。我看到
scrollTo()
被弃用了。有人知道怎么做吗?

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

这意味着当元素离开屏幕时,无法判断它的方向。所以,如果有人能解决这个问题,我很乐意听到

现在,根据您正在自动化的应用程序的类型,如果您知道某个元素的方向,则有可能对其进行假滑动。例如,如果你的应用程序只上下滚动(就像许多应用程序一样),那么只要你知道元素是在你当前位置的下方还是上方,你就可以滑动到它。这可以通过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();
(新的触控动作(驱动程序))。按(点选项。点(startX,位置。startY)
.waitAction(WaitOptions.WaitOptions(持续时间:百万(1000)))
.moveTo(PointOption.point(endX,endY))
.release()
.perform();
或者,您可以将不推荐使用的swipeTo方法与UIAutomator驱动器类型(而不是UIAutomator2)一起使用。我的理解是,这仅适用于较低版本的Android SDK设备


很抱歉,如果这没有给出您想要的答案,但希望它至少能为您提供一种查找元素的方法。

对于最新的Appium Java client 6.1.0,您可以使用以下代码刷卡

new AndroidTouchAction (driver)
  .press (PointOption.point (startX, startY))
  .waitAction (WaitOptions.waitOptions (Duration.ofMillis (1000)))
  .moveTo (PointOption.point (endX, endY))
  .release ()
  .perform ();
此处需要根据您的需要计算
startX
startY
endX
endY

你甚至可以使用我的开源框架v-3.0来像

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

只需使用这个简单的命令在appium中使用JAVA中的DesiredCapabilities进行滚动即可

driver.findElementByAndroidUIAutomator(“新UiScrollable(新UiSelector()).scrollIntoView(文本(\“您的文本\”);”


希望这有助于

Welcome,为了提高您在堆栈溢出方面的体验,请阅读一篇文章,以及如何创建一个,如果尚未创建,请阅读。@Wasim Bhamla-问题摘要说“在Chrome中自动滚动”,这意味着测试中的应用程序是webview或移动浏览器,而本机Appium库(AndroidTouchAction)没有在webview环境下工作??在使用移动浏览器时,AndroidDriver指的是浏览器,而不是本机应用程序。因此,驱动程序的工作方式与WebDriver类似,理想情况下AndroidTouchAction也可以工作。