使用Appium和Desired功能,我在设备中启动Android应用程序,但无法导航到不在同一页面的屏幕视图中的元素,JavascriptExecutor也与appium代码不兼容。我使用了UIAutomator查看器来识别objects.But只会识别屏幕视图中的对象。我们需要向下滚动,到最后识别对象,但JavascriptExecutor也与appium代码不兼容,并使用Keys.END和Keys.ARROW_DOWN此外,我无法识别不在同一页面的屏幕视图中的对象。
答案 0 :(得分:1)
请使用向下滑动的组合,以便在与元素交互之前使元素可见。代码示例 - 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 :(得分:0)
1)转到Android sdk文件夹 - >工具 - >执行uiautomatorviewer.bat 2)启动UI Automator查看器后,单击设备图标 3)现在您可以查看应用程序屏幕捕获页面的属性 注意: 使用UI自动机,您只能在屏幕截图方法
中查看属性答案 2 :(得分:0)
其实我的问题是如何在设备中向下滚动。我已经在使用UIautomatorviewer了。 但是在设备中只能识别屏幕视图中的元素。如果应用程序的屏幕符合模拟器大小,如果emactor大小减少,则可以正常工作。无法识别屏幕内的视图对象.JavascriptExecutor也不是与appium代码兼容,并使用Keys.END和Keys.ARROW_DOWN,我也无法识别不在屏幕视图中的对象。请有人知道如何执行此操作。
答案 3 :(得分:0)
使用最新的Appium,滑动应该适合您。如果你想获得创意并让它在特定区域滚动,这是一个更多的工作,但这是一个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知道什么时候只是在视线之外,并且调用它们上的点击/点击将自动滚动以执行操作。这使得编写测试变得有点困难,您将始终需要滚动,然后在执行下一步操作之前检查它是否存在。