首页  >  文章  >  Java  >  如何在 Selenium WebDriver (Java) 中有效处理嵌套 iFrame?

如何在 Selenium WebDriver (Java) 中有效处理嵌套 iFrame?

Susan Sarandon
Susan Sarandon原创
2024-10-30 14:08:18748浏览

How to Effectively Handle Nested iFrames in Selenium WebDriver (Java)?

在 Selenium WebDriver (Java) 中处理嵌套 iFrame

Selenium WebDriver 提供了与 iFrame 中的 Web 元素交互的能力。在所描述的场景中,有两个嵌套的 iFrame:cq-cf-frame 和 cq-gen367。目标是在两个 iFrame 中执行操作,然后返回主页。

问题

提供的代码在切换回外部 iFrame (cq-cf-frame) 时遇到问题与内部 iFrame (cq-gen367) 交互后。当尝试单击内部 iFrame 外部的“确定”按钮时,WebDriver 无法找到该元素。

解决方案

要解决此问题,需要先退出所有 iFrame,然后再切换回来到一个具体的。这可以使用 driver.switchTo().defaultContent(); 来实现方法。默认情况下,此方法会将 WebDriver 恢复为任何 iFrame 之外的主 HTML 文档。

以下是所提供代码的更新版本,可成功导航嵌套 iFrame 并按预期与元素交互:

<code class="java">/*Line 1 */ driver.switchTo().frame("cq-cf-frame");
/*     2 */ driver.findElement(By.css("#extdd-9 > div.tblRow >  input.edititem").click();
/*     3 */ driver.switchTo().frame("cq-gen379");
/*     4 */ driver.findElement(By.id("CQrte")).sendKeys("Tnx");

// Navigate back to the top level
driver.switchTo().defaultContent();

// Switch to the outer frame again
driver.switchTo().frame("cq-cf-frame");

/*     6 */ driver.findElement(By.xpath("//button[text()='OK']")).click();</code>

通过添加 driver.switchTo().defaultContent();在第 4 行和第 5 行之间,WebDriver 退出内部 iFrame 并返回到主 HTML 文档。然后, driver.switchTo().frame("cq-cf-frame");语句切换回外部 iFrame,允许 WebDriver 按预期与“确定”按钮交互。

以上是如何在 Selenium WebDriver (Java) 中有效处理嵌套 iFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn