首頁 > Java > java教程 > 主體

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

Mary-Kate Olsen
發布: 2024-10-30 20:55:30
原創
953 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!