我是ADF的新手。我正在编写混合测试脚本,我想知道为什么不可能通过Amazon Device Farm Appium JUnit上的xpath找到元素。
我测试过,我可以这样做:
action.click(By.id("menu"), "Click on menu");
但我不能这样做:
action.click(By.xpath("//*[@id=\"menu\"]"), "Click on menu");
我有几个os测试脚本,我曾经在SauceLabs上测试过,我没有遇到任何问题。它可以识别屏幕上显示的所有元素,但我没有找到任何解释为什么不在AWS Device Farm上接受xpath的原因。
编辑:错误消息
AppTest failed: Argument was an invalid selector (e.g. XPath/CSS). (WARNING:
The server did not provide any stacktrace information) Command duration or
timeout: 151 milliseconds For documentation on this error, please visit:
http://seleniumhq.org/exceptions/invalid_selector_exception.html Build info:
version: '3.1.0', revision: 'b94c902', time: '2017-02-16 12:21:31 -0800'
System info: host: 'ip-172-31-13-65', ip: '172.31.13.65', os.name: 'Linux',
os.arch: 'amd64', os.version: '3.13.0-139-generic', java.version:
'1.8.0_151' Driver info: io.appium.java_client.android.AndroidDriver `
如果您正在测试Android应用,那么这个xpath
应该可行。
By.xpath("//*[contains(@resource-id,'menu')]")
另外,不要忘记设置automationName
所需的功能。
capabilities.setCapability("automationName", "uiautomator2");
这应该工作:
action.click(By.xpath("//*[@id='menu']"), "Click on menu");
如果没有,try your xpath expression直到它有效。