我有一个针对我要运行的Appium测试,并使用库存浏览器运行了Android Emulator。该测试在iOS上通过,但在Android上却无法通过,因为Android似乎比iOS对元素定位器更为挑剔。
无论如何,我的问题是我希望它在这一点上失败,因为它找不到尝试单击的元素,但是测试只是挂起(大约10分钟,然后被套接字超时杀死),并且不会导致测试失败。仿真器保持打开状态,并且测试似乎正在继续运行。
我已经通过npm安装了最新版本的Appium。
这是我想要的功能:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "browser");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("takesScreenshot", true);
capabilities.setCapability("version", "5.1.1");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("avd", "nexus5");
webDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
我的Appium日志显示以下内容:
info: Got response with status 200: {"sessionId":"27038f591907917c7f2c1ce48db7d032","status":13,"value":{"message":"unknown error: Element is not clickable at point (342, 32). Other element would receive the click: <button class=\"butto...
info: <-- POST /wd/hub/session/27038f591907917c7f2c1ce48db7d032/element/0.9723546949680895-1/click 200 825.852 ms - 381
info: --> GET /wd/hub/session/27038f591907917c7f2c1ce48db7d032/screenshot {}
info: Proxying [GET /wd/hub/session/27038f591907917c7f2c1ce48db7d032/screenshot] to [GET http://127.0.0.1:9515/wd/hub/session/27038f591907917c7f2c1ce48db7d032/screenshot] with body: {}
info: [debug] Didn't get a new command in 30 secs, shutting down...
info: Shutting down appium session
info: Proxying [DELETE /] to [DELETE http://127.0.0.1:9515/wd/hub/session/27038f591907917c7f2c1ce48db7d032] with no body
我希望我的测试由于无法单击该元素而在此时退出。有人可以提供任何建议吗?
谢谢
更新
在捕获屏幕快照的地方添加了代码,这看起来像是导致测试挂起的原因:
public void captureScreenshot(String methodName) {
try {
new File(screenshotDirectory).mkdirs();
String filename = methodName + ".png";
File screenshot = ((TakesScreenshot) webDriverService.getWebDriver()).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File(screenshotDirectory + filename));
} catch (Exception e) {
System.out.println(e.toString());
}
}
设法修复它必须使用稍微不同的代码段才能在android上截屏:
public void captureScreenshot(String methodName) {
try {
new File(screenshotDirectory).mkdirs();
String filename = methodName + ".png";
AppiumDriver webDriver = (AppiumDriver) webDriverService.getWebDriver();
webDriver.context("NATIVE_APP");
File screenshot = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File(screenshotDirectory + filename));
} catch (Exception e) {
System.out.println(e.toString());
}
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句