問題: 明示的に切り替えることなく iframe またはネストされた iframe 内の要素を選択する
答え:
いいえ、それぞれの iframe に切り替えずに iframe 内の要素と直接対話することはできません。 Selenium のデフォルトのフォーカスはトップ ウィンドウに残ります。
理由:
Web ページが読み込まれると、Selenium のフォーカスはメイン (トップレベル) ウィンドウにあります。 iframe 内の要素を操作するには、その iframe に明示的に切り替える必要があります。
フレームの切り替え方法:
フレームを切り替える方法は 3 つあります:
フレーム別名前:
driver.switch_to.frame("iframe_name")
フレーム別 ID:
driver.switch_to.frame("iframe_id")
フレーム別インデックス:
driver.switch_to.frame(0) # Index of the frame
メイン フレームに切り替えるには、次を使用します:
driver.switch_to.default_content()
より良いアプローチ: WebDriverWait
より良いアプローチは、WebDriverWait をFrame_to_be_available_and_switch_to_it 条件:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "iframe_id")))
このメソッドは、指定されたフレームが使用可能になるまで待機してから、それに切り替えます。
動的にロードされた要素の処理:
要素が動的にロードされる場合は、ExpectedConditions の使用が必要になる場合があります。要素を操作する前に要素が表示されるまで待機する場合:
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "element_id")))
リファレンス:
詳細については、以下を参照してください:
以上がSelenium はフレームを明示的に切り替えずに iframe 要素と対話できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。