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中文網其他相關文章!