iframe なしで開始するページがあり、アンカーをクリックした後に JavaScript を介して iframe が追加されます。
私が抱えている問題は、フレームに切り替えると、driver.switch_to_frame(x)
自分のコンテンツがまだ見つかることです。
見つかったフレームをループして、driver.find_elements_by_tag_name('iframe')
見つけると予想されるクラスをそれぞれチェックしようとしましたが、そのような運はありませんでした。
driver.switch_to_active_element()
正しいiframeも提供しません。
Seleniumがドライバーから見ているものにJS DOMの変更が反映されていないため、iframeコンテンツにアクセスできないだけかどうかはわかりません。他の iframe についても同じプロセスを問題なく実行しましたが、これはうまくいきません。以下は、私が扱っているものの簡略化されたバージョンです。
JS の前:
<html>
<body>
<a onclick="jsmagic">load iframe</a>
</body>
</html>
JSの後:
<html>
<body>
<iframe><div class='modal'>Message</div></iframe>
<a onclick="jsmagic">load iframe</a>
</body>
</html>
Python WebDriver の試行:
driver.switch_to_frame(0)
driver.find_elements_by_class_name('modal')
driver.switch_to_default_content()
私はまた、そのようなバリエーションを試しました:
frame = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(frame)
driver.find_elements_by_class_name('modal')
オブジェクトに到達するためにイベントを使用driver.execute_script
してみましたが、コンテンツに到達することは私を超えています。機能する Firefox コンソール コマンドは、Selenium 経由では実行されません。