无法在Selenium Webdriver(java)中找到iframe

7

我希望能够选择一个位于弹出窗口内的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个回答

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();

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")));

我尝试使用上述代码(iframe id)进行操作,但仍无法识别iframe元素。奇怪的是,即使超时限制已经超过,测试用例也没有失败。如果您需要更多细节,请告诉我。 - chivas_hvn

0

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

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

如果您有连续的两个iFrame,您可以通过此函数进行切换。
$I->switchToWindow();

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接