无法使用Android WebDriver操作IFrame中的点击

我正在写一个混合应用程序的testing,其中包含一个内置的Web视图内的iframe,我试图点击一个button内的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上它什么都不做。 testing继续运行,但没有采取任何行动。

我用nodejs wd客户端和Genymotion 2.2.2运行Appium 1.2.2我也在真正的Android设备上和Andorid SDK模拟器上尝试过 – 它们都没有工作。

那么,我设法解决它。 我用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的github上打开了一个关于它的问题,也会在wd的github中打开一个。

更新:

您可以使用.tap()链接元素方法:

  .elementByXPath('//li[div/span[contains(text(),"Data I want")]]') .tap()