首頁  >  文章  >  Java  >  如何在 Selenium WebDriver (Java) 中有效處理巢狀 iFrame?

如何在 Selenium WebDriver (Java) 中有效處理巢狀 iFrame?

Susan Sarandon
Susan Sarandon原創
2024-10-30 14:08:18679瀏覽

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