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

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