Seetest Automation MobileWebDriver按xpath查找元素

时间:2016-09-05 16:59:55

标签: java android selenium xpath automation

我正在使用来自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代码兼容/集成。

谢谢,希望有人知道!

1 个答案:

答案 0 :(得分:0)

问题是找到元素的目标'区域'或'上下文'。 MobileWebDriver默认使用NATIVE区域。我的应用程序是一个使用Web组件的混合应用程序,我正在寻找的元素是一个Web元素。

所以,解决方案是使用MobileWebDriver的这种方法:

((MobileWebDriver) driver).useWebIdentification();

允许驱动程序查看WEB区域而不是NATIVE。

还有另一种方法可以检查NATIVE中的元素:

((MobileWebDriver) driver).useNativeIdentification();

简单的解决方案。希望它有所帮助。