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