Selenium では、デフォルトのフォーカスが一番上のウィンドウにあるため、要素との対話にはそれぞれの iFrame に切り替える必要があります。ただし、フレーム階層をループして要素の場所を特定するのは難しい場合があります。
iframe 内の要素にアクセスするには、特定の切り替えメソッドが使用されます。
フレーム名別: 名前の使用属性:
driver.switch_to.frame("iframe_name")
フレーム ID 別: ID 属性の使用:
driver.switch_to.frame("iframe_id")
フレームインデックス別: フレームの数値を使用Index:
driver.switch_to.frame(0)
ただし、これらの方法は、複数のレベルのネストされた iFrame をナビゲートする場合には煩雑になる可能性があります。このプロセスを簡略化するために、Selenium は WebDriverWait で Frame_to_be_available_and_switch_to_it 条件を提供します。
たとえば、その名前を使用して iframe に切り替えるには:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME, "iframe_name")))
注: 対話後要素とともに、default_content() またはparent_frame() を使用して、メイン フレームに戻ります。
iFrame が動的にロードされる場合、明示的な待機を使用すると、要素と対話する前に要素が確実に使用可能になります。このアプローチは、フレームセットおよびネストされた iFrame シナリオの要素に特に役立ちます。
以上がSelenium はネストされた iFrame 内の HTML 要素を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。