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

时间:2012-08-08 14:41:02

标签: java testing iframe automation selenium-webdriver

我想选择一个位于弹出窗口中的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 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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")));

答案 2 :(得分:0)

// IFRAME [@src =&#34; /some/url.do参数=的getData&#34;]

但这可能是一个时机&amp;加载问题。因此,在加载内容之前,您可能尝试编写/读取/与iframe交互。在选择之前尝试检查元素。等等,如果它不存在。

答案 3 :(得分:0)

以下是选择iFrame并输入文本“Test data”

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

如果您有两个iFrame,您可以切换此功能

$I->switchToWindow();