如何在Java 中使用Selenium WebDriver 有效地導航嵌套iFrame
在Selenium WebDriver 中,處理巢狀iFrame 可能是一項具有挑戰性的任務。讓我們深入研究一個特定的場景:
考慮以下HTML 結構,其中一個iframe 嵌套在另一個iframe 中:
<code class="html"><div> <iframe id="cq-cf-frame"> <iframe id="gen367"> <body id="CQrte">...</body> </iframe> </iframe> </div></code>
我們的目標是與兩個iFrame 中的元素進行互動。
問題陳述:
選擇外部iframe 並導航到內部iframe 後,嘗試點擊外部iframe 中的元素(例如「確定」按鈕)失敗,導致出現元素未找到異常。
解決方案:
要在嵌套iFrame 之間成功導航並與所需元素交互,請按照以下步驟操作:
選擇外部iFrame:
<code class="java">driver.switchTo().frame("cq-cf-frame");</code>
選擇內部iFrame:
<code class="java">driver.switchTo().frame("cq-gen379");</code>
<code class="java">driver.findElement(By.id("CQrte")).sendKeys("Tnx");</code>
重新輸入外部iFrame:
<code class="java">// Between steps 4 and 5, remove the line: // selenium.selectFrame("relative=up"); driver.switchTo().defaultContent(); // This exits both nested frames</code>
與外部iFrame 元素交互:
<code class="java">driver.switchTo().frame("cq-cf-frame");</code>
透過使用driver.switchTo().defaultContent();在重新進入外部iframe 之前,我們有效地退出所有嵌套框架,然後返回到我們需要的特定框架。這解決了找不到元素的問題,並允許我們與所需的元素進行互動。
以上是如何在 Java 中使用 Selenium WebDriver 與巢狀 iFrame 中的元素進行互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!