我正在为混合应用编写一个测试,其中包含webview中的iframe,我正在尝试点击iframe中的按钮。
值得一提的是,iframe内部的数据是另一个来源。然而,我设法切换到iframe,我可以看到它的内容(也获得元素)。
这是我运行的命令序列
return driver
.contexts().then(function (contexts) {
return browser.context(contexts[1]); // choose the webview context
})
.frame('myFrame") //switch to iframe
.getElementById('myButton')
.click() //try to click button
它在iOS模拟器上运行良好,但在Android上它什么都不做。测试继续运行,但没有采取任何措施。
我正在使用 nodejs wd 客户端和 Genymotion 2.2.2 运行 Appium 1.2.2 我也在真正的Android设备和Andorid SDK模拟器上尝试过 - 它们都没有用。
答案 0 :(得分:1)
好吧,我设法解决了这个问题。我使用xpath找到元素,然后使用tapElement()
来实现魔法。
return driver
.contexts().then(function (contexts) {
return browser.context(contexts[1]); // choose the webview context
})
.frame('myFrame") //switch to iframe
.elementByXPath('//li[div/span[contains(text(),"Data I want")]]')
.then(function(el){
return driver.tapElement(el);
})
我在appium's github打开了一个关于它的问题,并且还将在wd的github中打开一个。
您可以使用.tap()
链接元素方法:
.elementByXPath('//li[div/span[contains(text(),"Data I want")]]')
.tap()