Javascript 使用Appium和所需的功能,我正在设备中启动android应用程序,但无法导航到屏幕视图中不存在的元素
使用Appium和所需功能,我在设备中启动android应用程序,但无法导航到不在同一页面屏幕视图中的元素,JavascriptExecutor也与appium代码不兼容。我使用UIAutomator viewer来识别对象。但只会识别屏幕视图中的对象。我们需要向下滚动到最后才能识别对象,但JavascriptExecutor也与appium代码不兼容,使用Keys.END和Keys.ARROW_DOWN,我也无法识别不在同一页面屏幕视图中的对象。1)转到Android sdk文件夹-->工具-->执行uiautomatorviewer.bat 2) 启动UI Automator viewer后,单击设备图标 3) 现在,您可以查看应用程序屏幕捕获页面的属性 注:Javascript 使用Appium和所需的功能,我正在设备中启动android应用程序,但无法导航到屏幕视图中不存在的元素,javascript,android,appium,Javascript,Android,Appium,使用Appium和所需功能,我在设备中启动android应用程序,但无法导航到不在同一页面屏幕视图中的元素,JavascriptExecutor也与appium代码不兼容。我使用UIAutomator viewer来识别对象。但只会识别屏幕视图中的对象。我们需要向下滚动到最后才能识别对象,但JavascriptExecutor也与appium代码不兼容,使用Keys.END和Keys.ARROW_DOWN,我也无法识别不在同一页面屏幕视图中的对象。1)转到Android sdk文件夹-->工具-
使用UI automator,您只能在屏幕截图方法中查看属性。实际上,我的问题是如何在设备中向下滚动。我已经在使用UIautomatorviewer。
但是在设备中,只能识别屏幕视图中的元素。Emulator如果应用程序的屏幕适合仿真器的大小,如果Emulator的大小减小,则可以正常工作。同样,无法识别屏幕中看不到的对象。JavascriptExecutor也与appium代码不兼容,使用Keys.END和Keys.ARROW\u DOWN,我也无法识别屏幕视图中不存在的对象。请让人知道如何操作。使用最新的应用程序,您现在可以使用滑动。如果您想获得创造性,并让它在特定的领域滚动,这需要做更多的工作,但这里有一个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);
}
public void swip(双星tx、双星、双端x、双端y、双持续时间){
JavascriptExecutor js=(JavascriptExecutor)驱动程序;
HashMap swipeObject=新HashMap();
swipeObject.put(“startX”,startX);
swipeObject.put(“startY”,startY);
swipeObject.put(“endX”,endX);
swipeObject.put(“endY”,endY);
swipeObject.put(“持续时间”,持续时间);
js.executeScript(“移动:滑动”,swipeObject);
}
当元素存在或可见时,Android没有区别。要么都是真的,要么都是假的。另一方面,iOS知道什么时候东西刚刚看不见,点击它们就会自动滚动来执行操作。这使得编写测试变得更加困难,在执行下一个操作之前,您将始终需要滚动并检查它是否在那里。请在与元素交互之前使用向下滑动的组合,使其可见。代码示例- HashMap swipeObject=新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);
}