6

我想选择一个位于弹出窗口中的 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 中定位元素。

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

提前致谢。

4

4 回答 4

6

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

//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();
于 2012-08-09T14:44:27.867 回答
2

由于 iframe 有 id 参考这里,你的答案如下

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

你的代码是

driver.switchTo().frame(myD.findElement(By.id("iframe")));
于 2012-08-08T15:41:16.447 回答
0

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

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

于 2014-04-18T05:38:37.950 回答
0

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

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

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

$I->switchToWindow();
于 2017-06-30T04:32:18.653 回答