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