Java で Selenium WebDriver を使用してネストされた iFrame を効果的にナビゲートする方法
Selenium WebDriver でネストされた iFrame を処理することは、困難なタスクとなる場合があります。特定のシナリオを詳しく見てみましょう:
iframe が別の iframe 内にネストされている次の HTML 構造を考えてみましょう:
<code class="html"><div> <iframe id="cq-cf-frame"> <iframe id="gen367"> <body id="CQrte">...</body> </iframe> </iframe> </div></code>
私たちの目標は、両方の iFrame 内の要素と対話することです。
問題ステートメント:
外側の iframe を選択して内側の iframe に移動すると、外側の iframe 内の要素 (OK ボタンなど) をクリックしようとすると失敗し、要素が表示されます。例外が見つかりません。
解決策:
ネストされた iFrame 間を正常に移動し、目的の要素を操作するには、次の手順に従います:
外側の iFrame を選択します:
<code class="java">driver.switchTo().frame("cq-cf-frame");</code>
内側の iFrame を選択します:
<code class="java">driver.switchTo().frame("cq-gen379");</code>
内部 iFrame 要素との対話:
<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>
外部 iFrame 要素と対話します:
<code class="java">// Continue step 6 driver.findElement(By.xpath("//button[text()='OK']")).click();</code>
driver.switchTo().defaultContent(); を使用する。外側の iframe に再度入る前に、ネストされたフレームをすべて事実上終了し、必要な特定のフレームに戻ります。これにより、要素が見つからない問題が解決され、目的の要素を操作できるようになります。
以上がJava で Selenium WebDriver を使用してネストされた iFrame 内の要素を操作するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。