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

标签 javascript jquery html selenium iframe

我正在使用 firebug 检查 xpath,一 block firebug 显示您在窗口或 iframe 等中找到的元素。我面临类似的问题,它向我展示了 2 个选项 1:顶窗 2: iframe#大型机 现在的问题是,当我检查 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 标记。
请建议我是否可以通过其他方式检测该元素。

最佳答案

有多种方法可以切换到 iframe,例如使用框架 id、名称、索引以及通过 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();

关于javascript - 如何将驱动程序控制从顶部窗口切换到 iframe#mainFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808453/

相关文章:

javascript - 从函数和事件处理程序访问相同的变量

javascript - 将jquery中的值发送到php并返回页面

javascript - 如何打破 Javascript 中的 jQuery.delay?

javascript - 如何增强这样的代码

javascript - 如何在进入某个特定功能时重复进行ajax调用并中止所有尚未完成的先前调用?

javascript - 区分鼠标 "click"和屏幕阅读器 "Press"

javascript - 如何在 Javascript 中比较 id

html - 底层 CSS 转换完成时字体粗细向上移动

javascript - 如果我的 JavaScript 代码在 &lt;iframe&gt; 中,我是否需要命名空间?

javascript - 如何根据内容动态调整 div 宽度,同时保持其居中并让内容向左浮动?