如何将驱动程序控制从顶部窗口切换到iframe #mainFrame

时间:2015-08-04 11:46:18

标签: javascript jquery html selenium iframe

我使用firebug来检查xpath,一块firebug显示你的发现在窗口或iframe中的元素等等。我面临类似的问题,它向我展示了两个选项 1:顶部窗口 2:iframe #mainframe 现在的问题是,当我检查它在iframe#mainFrame中显示的元素时,我尝试将驱动程序控制从主窗口切换到iframe并使用webdriver检测元素但是它对我没有用,我写了下面的一组代码:

driver.switchTo().frame("mainFrame");
driver.findElement(By.xpath("//div[@class='div_img']/img[@src='http://ser/themes/20/3/Flor/CF.jpg']")).click();

注意:当我在html代码中检查iframe时,它内部不包含其他文档,它只包含id和其他样式以及all和src标记。
请建议是否有其他方法可以检测到该元素。

2 个答案:

答案 0 :(得分:1)

有多种方法可以切换到iframe,例如使用frame id,name,index和webElement。

可能在您的情况下,可能没有iframe ID或名称。最好的方法是创建一个唯一标识iframe的xpath,使用此xpath创建一个webelement并将此webelement传递给switch帧。这更可靠。

假设您有以下标记: -

<div id='noticeRichText'>
<iframe height="83px" frameborder="0" width="100%" scrolling="NO" '1331808552380'"="" +="" src="initialize.do?init=header&cacheBuster="  marginheight="0" marginwidth="0"> 
</div>

为iframe创建一个WebElement: -

WebElement iframe=
driver.findElement(By.xpath("//*[@id='noticeRichText']/iframe"));

使用上述webelement切换到框架: -

driver.switchTo().frame(iframe);

在帧上执行所需的操作,然后使用以下命令切换回父窗口: -

driver.switchTo().defaultContent();

答案 1 :(得分:-1)

对于窗口处理,您可以使用此...

String baseWindow = driver.getWindowHandle();
driver.switchTo().window(baseWindow);