【问题标题】:Unable to locate iframe in Selenium Webdriver(java)无法在 Selenium Webdriver(java)中找到 iframe
【发布时间】:2012-08-05 17:00:21
【问题描述】:

我想选择一个位于弹出窗口中的 iframe 元素。我可以进入弹出窗口但无法找到 iframe。下面是弹窗的html代码。

<html>
<head></head>
<body>
<iframe width="100%" height="100%" border="0" src="/some/url.do?parameter=getData">
<html>
 .
 .
 <table id="ec_table" class="tableRegion" width="20%" cellspacing="1" cellpadding="2" 
 border="0">
 <tr class="even">
 <td>
 <input type="radio" value="173" name="hier_data_id">
 </td>
 </tr>
 .
 .
 </html>
 </iframe>
 </body>
 </html>

在这里,我想单击位于 iframe 内的单选按钮。我使用下面的代码在 iframe 中切换,但它没有切换到 iframe。

 driver.switchTo().frame(myD.findElement(By.tag("iframe")));

由于 iframe 没有 id,我发现很难在 iframe 中定位元素。

有谁知道我该怎么做..?

提前致谢。

【问题讨论】:

    标签: java testing iframe automation selenium-webdriver


    【解决方案1】:

    您可以通过索引切换到帧。请尝试以下操作:

    //go to popup
    //switch to the first frame , assuming there's only one frame with no id or name
    driver.switchTo().frame(0);
    driver.findElement(By.name("hier_data_id")).click();
    

    【讨论】:

      【解决方案2】:

      由于 iframe 有 id 参考HERE,您的答案如下

      <iframe width="100%" height="100%" border="0" id="iframe"
                        src="/some/url.do?parameter=getData">
      

      你的代码是

      driver.switchTo().frame(myD.findElement(By.id("iframe")));
      

      【讨论】:

      • 我尝试了上面的代码(iframe id),仍然无法识别 iframe 元素。奇怪的是,即使超过超时限制,测试用例也没有失败。如果您需要更多详细信息,请告诉我。
      【解决方案3】:

      //iframe[@src="/some/url.do?parameter=getData"]

      但这可能是时间和加载问题。因此,您可能会在内容加载之前尝试与 iframe 进行写入/读取/交互。在选择它之前尝试检查元素。如果它不存在,请等待。

      【讨论】:

        【解决方案4】:

        这里是选择 iFrame 并输入文本“测试数据”的代码

        $x = $I->grabAttributeFrom('//iframe', 'id');
        $I->switchToIframe($x);
        $I->fillField('#tinymce', 'Test data');
        $I->switchToWindow();`
        

        如果你有两个iFrame一个接一个你可以通过这个功能切换

        $I->switchToWindow();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-24
          • 2017-05-30
          • 2016-08-13
          相关资源
          最近更新 更多