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

时间:2014-10-01 17:12:08

标签: android node.js iframe appium

我正在为混合应用编写一个测试,其中包含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模拟器上尝试过 - 它们都没有用。

1 个答案:

答案 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()