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中文网其他相关文章!