【问题标题】:Appium on Android cannot locate elements that are not visible on the scrolled portion of the screenAndroid 上的 Appium 无法定位在屏幕滚动部分不可见的元素
【发布时间】:2016-11-23 19:01:36
【问题描述】:
我们使用的是 Appium 1.5.3。
当 Appium 启动我们的应用程序进行测试时,应用程序的某些部分不会滚动到视图中。 Appium 根本无法与这些部分进行交互。
假设我们要点击一个当前不在可见部分的按钮,点击它的唯一方法是反复滚动并尝试点击。这不是适用于所有情况的正确解决方案,我只是用来描述问题。
我想知道我们是否做错了什么,或者这是否是已知的 Appium 限制以及如何解决它?
【问题讨论】:
标签:
android
integration-testing
appium
【解决方案1】:
这不是 Appium 的限制,而是 Android 框架的限制。如果你使用 UIAutomator 并扫描你的手机屏幕,你会发现 UIAutomator 只显示当前显示在屏幕上的元素。它不会显示那些不可见的元素(您需要向上/向下滚动的元素)。
但是如果您在 iOS 中尝试相同的操作,您会注意到 iOS 会在屏幕上公开所有元素——当前可见的元素和需要滚动的元素。所以iOS中不需要滚动
没有解决方法。唯一的选择是向上/向下滚动并在可见屏幕上显示您要处理的元素。
Appium 提供了许多选项来帮助您在屏幕上滚动 -
driver.swipe(startX, startY, endX, endY, duration);
触摸动作
TouchAction touchAction = new TouchAction(driverMobile);
touchAction.press(startX, startY).moveTo(endX, endY).release().perform();
使用 TouchActions,您既可以使用坐标滚动,也可以通过屏幕上的元素滚动。