![](/img/trans.png)
[英]Unable to get location of object present in screen - Appium (Android)
[英]Using Appium and Desired capability,i am launching android application in device,but unable to navigate to elements which is not in screen view
使用Appium和Desired功能,我正在设备中启动android应用程序,但无法导航到不在同一页面的屏幕视图中的元素,JavascriptExecutor也与appium代码不兼容。我使用了UIAutomator查看器来识别对象。我只需要识别屏幕上的对象即可。需要一些向下滚动才能最终确定对象,但是JavascriptExecutor也与appium代码不兼容,并使用Keys.END和Keys.ARROW_DOWN我也是无法识别不在同一页面的屏幕视图中的对象。
请先向下滑动组合以使元素可见,然后再与之交互。 代码示例-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滑动即可为您工作。 如果您想发挥创意并让它在特定区域滚动,则需要做更多的工作,但是这里有一个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知道什么时候看不到东西,对它们进行单击/点击将自动滚动以执行操作。 这使得编写测试变得更加困难,您将始终需要滚动然后检查它是否存在,然后再执行下一步操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.