使用 Appium 和 Desired 功能,我在设备中启动 android 应用程序,但无法导航到不在同一页面的屏幕视图中的元素,JavascriptExecutor 也与 appium 代码不兼容。我使用 UIAutomator 查看器来识别对象。但是只有在屏幕视图中的对象才会被识别。一些我们需要向下滚动,到最后来识别对象,但是 JavascriptExecutor 也与 appium 代码不兼容,并且使用 Keys.END 和 Keys.ARROW_DOWN 我也是无法识别不在同一页面的屏幕视图中的对象。
4 回答
请在与元素交互之前使用向下滑动的组合使元素可见。代码示例 - HashMap swipeObject = new HashMap();
WebElement we = driver.findElement(By.xpath("/relative"));
Dimension screenSize = driver.manage().window().getSize();
Double screenWidth = Double.valueOf(String.valueOf(screenSize.getWidth())) / 2;
Double screenHeight = Double.valueOf(String.valueOf(screenSize.getHeight())) / 2;
swipeObject.put("startX", (screenWidth));
swipeObject.put("startY", screenHeight + 100);
swipeObject.put("endX", (screenWidth));
swipeObject.put("endY", (screenHeight));
swipeObject.put("duration", 1.0);
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
while (!elementPresent(driver,by, 2)) {
js.executeScript("mobile: swipe", swipeObject);
Thread.sleep(1000);
}
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
}
1) 转到 Android sdk 文件夹 --> 工具 --> 执行 uiautomatorviewer.bat 2) 启动 UI Automator 查看器后,单击设备图标 3) 现在您可以查看应用程序屏幕捕获页面的属性 注意:使用 UI automator,您只能以截图方式查看属性
实际上我的问题是如何在设备中向下滚动。我已经在使用 UIautomatorviewer。但是在设备中只能识别屏幕视图中的元素。如果应用程序的屏幕适合模拟器大小,如果模拟器大小减小,则模拟器可以正常工作。再次无法识别屏幕内视图之外的对象。JavascriptExecutor 也不是与 appium 代码兼容,并且使用 Keys.END 和 Keys.ARROW_DOWN 我也无法识别不在屏幕视图中的对象。请有人知道如何做到这一点。
使用最新的 Appium,Swipe 现在应该适合您了。如果您想获得创意并让它在特定区域滚动,那需要做更多的工作,但这里有一个 java 代码片段可以开始。
public void swipe(Double startX, Double startY, Double endX, Double endY, Double duration) {
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Double> swipeObject = new HashMap<String, Double>();
swipeObject.put("startX", startX);
swipeObject.put("startY", startY);
swipeObject.put("endX", endX);
swipeObject.put("endY", endY);
swipeObject.put("duration", duration);
js.executeScript("mobile: swipe", swipeObject);
}
Android 在元素存在或可见之间没有区别。它们要么是真的,要么是假的。另一方面,iOS 知道事物何时不在视野范围内,并且在它们上单击/点击会自动滚动以执行操作。这使得编写测试变得有点困难,并且在执行下一个操作之前,您总是需要滚动并检查它是否存在。