Edited at

Seleniumでiframeに出入りしてみた


なぜか取れないiframeの中身

以前スクレイピングをしていた際、検証モードからセレクタを指定しているのにも関わらず

selenium.common.exceptions.NoSuchElementException

とエラーを吐きました。

中を見ると操作したい部分がiframe構造の中に入っており、どうやらiframeの外からでは中のDOMを操作できないようになっていました。面倒だったので対処法を残しておきます。


iframeに入ろう!


iframe = driver.find_element_by_css_selector('欲しいiframeのcssセレクタ')
driver.switch_to_frame(iframe)

これでiframe内のDOMにアクセスできるようになりました。


iframeから抜けてみよう!


driver.switch_to.default_content()

一行でiframeから抜け出せます。


最後に

この記事を見ると、iframe内のリンクを直接開く方法もありますね。

seleniumで操作しなければいけない工数が少ない場合は、こちらの記事にある方がお勧めだと思います。

直接開く方法はページの真ん中より少し下に載っています。