首頁  >  文章  >  Java  >  如何正確退出嵌套 iframe 並與 Selenium WebDriver 中的元素互動?

如何正確退出嵌套 iframe 並與 Selenium WebDriver 中的元素互動?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 20:55:30954瀏覽

How to Properly Exit Nested Iframes and Interact with Elements in Selenium WebDriver?

在Java 中使用Selenium WebDriver 處理iframe

本文解決了使用Java 與Selenium WebDriver 中深度嵌套的iframe 進行交互的挑戰。具體來說,它關注的是選擇外部 iframe 訪問內部 iframe,在其 body 中輸入文本,然後退出兩個 iframe 以單擊位於外部 iframe 中的按鈕的場景。

問題並嘗試

提供的程式碼片段最初按預期工作,並將文字輸入到內部 iframe 的正文中。但是,當嘗試退出兩個 iframe 並按一下「確定」按鈕時,Selenium 會拋出異常,指示找不到按鈕元素。

解決這個問題的關鍵在於使用 driver.switchTo().defaultContent() 方法。此方法可讓您退出所有目前選定的框架,有效地返回主 HTML 文件。

修改的程式碼

要修復程式碼,請取代先前的退出嘗試內部iframe 包含以下內容:

<code class="java">// Remove the line with selenium.selectFrame("relative=up");
driver.switchTo().defaultContent(); // Exit both frames
driver.switchTo().frame("cq-cf-frame"); // Re-enter the outer iframe</code>

透過新增這些行,Selenium 將首先退出兩個iframe,然後重新進入外部iframe。這可確保在嘗試與「確定」按鈕互動之前正確設定所有框架選擇。

完整程式碼

修改後的程式碼應類似於以下內容:

<code class="java">driver.switchTo().frame("cq-cf-frame"); // Line 1
driver.findElement(By.css("#extdd-9 > div.tblRow > input.edititem")).click(); // Line 2
driver.switchTo().Frame("cq-gen379"); // Line 3
driver.findElement(By.id("CQrte")).sendKeys("Tnx"); // Line 4
driver.switchTo().defaultContent(); // Line 5, added to exit both frames
driver.switchTo().frame("cq-cf-frame"); // Line 6, added to re-enter outer frame
driver.findElement(By.xpath("//button[text()='OK']")).click(); // Line 6</code>

完成這些變更後,程式碼現在應該成功將文字輸入內部iframe 並點擊外部iframe 中的「確定」按鈕。

以上是如何正確退出嵌套 iframe 並與 Selenium WebDriver 中的元素互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn