【问题标题】:how to switch driver control from the top window to iframe#mainFrame如何将驱动程序控制从顶部窗口切换到 iframe#mainFrame
【发布时间】:2015-08-04 11:46:17
【问题描述】:

我正在使用 firebug 来检查 xpath,一个 firebug 块显示您在 window 或 iframe 中找到的元素等等。我面临着类似的问题,它向我展示了 2 个选项 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 标签。
请建议是否有其他方法可以检测到该元素。

【问题讨论】:

  • 你能分享一下页面/一些html吗?
  • 请分享 iframe 的 html 标记。

标签: javascript jquery html selenium iframe


【解决方案1】:

有多种方法可以切换到 iframe,例如使用框架 ID、名称、索引和通过 webElement。

可能是您的情况,可能没有 iframe id 或名称。最好的方法是创建一个唯一标识 iframe 的 xpath,使用此 xpath 创建一个 webelement,并将此 webelement 传递给 switch frame。这个比较靠谱。

假设您有如下标记:-

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

【讨论】:

  • 我尝试使用你刚才所说的,它不适合我,我写了以下代码 {WebElement iframe=driver.findElement(By.xpath("//td/iframe[@id= 'mainFrame']/iframe"));driver.switchTo().frame(iframe);}
  • 我认为您错误地捕获了 xpath,我认为它应该是这样的:- WebElement iframe=driver.findElement(By.xpath("//td/iframe[@id='mainFrame' ]"));如果您可以粘贴 html 标记,我可以建议您更正 xpath。
  • 谢谢我已经成功切换到框架并执行操作了。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多