我使用的是experitest.com的Seetest自动化,更准确地说,我使用的是Seetest自动化的MobileWebDriver实现,正如experitest所说的:"...for移动浏览器...它也可以用于自动化本机应用程序“。
因此,我在Seetest下启动了我的仪表化应用程序,然后打开检查器“object spy”。这个检查器非常酷,因为您可以在应用程序的某些屏幕元素中单击,检查器将自动在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代码兼容/集成。
谢谢,希望有人知道些什么!
发布于 2016-09-06 16:14:23
问题出在查找元素的目标'zone‘或'context’。MobileWebDriver默认使用本机区域。我的应用程序也是一个使用web组件的混合应用程序,而我正在寻找的元素是一个web元素。
因此,解决方案是使用MobileWebDriver的这种方法:
((MobileWebDriver) driver).useWebIdentification();这允许驱动程序查看WEB专区,而不是本机。
还有另一种方法可以在原生中检查元素:
((MobileWebDriver) driver).useNativeIdentification();简单的解决方案。希望能有所帮助。
https://stackoverflow.com/questions/39334959
复制相似问题