无法在Selenium Webdriver中找到iframe(java)
问题描述:
我想选择一个位于弹出窗口中的iframe元素。我能够进入弹出窗口,但无法找到iframe。下面是弹出窗口的html代码。无法在Selenium Webdriver中找到iframe(java)
<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中的元素。
有谁知道我该怎么做..?
在此先感谢。
答
您可以切换到其索引的帧。请尝试以下操作:
//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();
答
由于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")));
+0
我上面尝试切换有两个iFrame的一个代码(iframe id),仍然无法识别iframe元素。奇怪的是,即使超时限制超过,测试用例也没有失败。如果你需要更多的细节,请告诉我。 – 2012-08-08 16:59:02
答
//iframe[@src="/some/url.do?parameter=getData“]
但是这可能是一个时间&加载问题。所以你可能试图在内容加载前写入/读取/与iframe交互。在选择它之前尝试检查元素。如果它不存在,请等待。
答
这里是选择的iFrame和输入文字“测试数据”
$x = $I->grabAttributeFrom('//iframe', 'id');
$I->switchToIframe($x);
$I->fillField('#tinymce', 'Test data');
$I->switchToWindow();`
代码如果您陆续您可以通过此功能
$I->switchToWindow();
很多谢谢,它的工作。 – 2012-08-09 15:09:28