我正在使用来自experitest.com的Seetest Automation,更准确地说,我正在使用Seetest Automation的MobileWebDriver实现,正如经验所说“...对于移动浏览器[...]它也可用于自动化Native应用程序以及“。
所以,我在Seetest下启动我的仪器化应用程序,然后打开检查员'对象间谍'。这个检查器非常酷,因为您可以单击应用程序的某个屏幕元素,检查器将自动在DOM中显示其所有属性的节点。检查员可以验证屏幕DOM的xpath表达式,这样您就可以轻松验证xpath表达式对于您正在寻找的元素是否正确。
我有一个xpath:// * [@ text ='Login']
该xpath已经使用对象spy进行了验证,并且能够找到我正在寻找的元素。
所以,我已经验证了我的按钮的xpath表达式,下面是将执行点击的Seetest客户端:
MobileWebDriver driver = new MobileWebDriver("localhost", 8889);
driver.client.setDevice(mydevice.ID);
// Launch instrumented app
driver.client.launch(myapp.activity, true, true);
driver.findElementByXPath("//*[@text='Login']").click();
之前的四行无效。有问题?遗漏了什么? ¿仪表与非仪表?
前四行的例外情况:
com.experitest.client.InternalException: Exception caught while executing click: Element was not identified: 'xpath=//*[@text='Login']' at zone NATIVE
我正在使用Seetest的MobileWebDriver实现,因为我需要与某些selenium / appium代码兼容/集成。
谢谢,希望有人知道!
答案 0 :(得分:0)
问题是找到元素的目标'区域'或'上下文'。 MobileWebDriver默认使用NATIVE区域。我的应用程序是一个使用Web组件的混合应用程序,我正在寻找的元素是一个Web元素。
所以,解决方案是使用MobileWebDriver的这种方法:
((MobileWebDriver) driver).useWebIdentification();
允许驱动程序查看WEB区域而不是NATIVE。
还有另一种方法可以检查NATIVE中的元素:
((MobileWebDriver) driver).useNativeIdentification();
简单的解决方案。希望它有所帮助。