【Python】Seleniumでiframeの内容を操作する

Python

WebアプリケーションとExcelを自動的に操作して
ExcelのデータをWebアプリケーションに入力する
RPA関連の作業を仕事で行っています。

メインはUi PathというRPAツールを使用していますが
Webアプリケーション内にiframeタグが使用されている箇所については
一筋縄ではいきません。

iframeの要素選択について
結論から書くと、IFrameを使う処理はIEで対応するのが精度が高いと思います。 少しシステマチックというか、プログラミング的な話題になりますが。 IEの場合、COMというインターフェースを介しているのに対し、ChromeやFirefoxはExtensionからのJavaScriptを介してUiPathと連携してい...

iframeが使用されている箇所はPythonからSeleniumを使用して操作を行ってみます。

PythonでSeleniumの導入

PythonでSeleniumを使用するにはpipコマンドを使用します。
Anacondaがインストールされている環境ではcondaコマンドでもインストールできます。

 

適当なiframeタグを使用しているサイトが見つからなかったので
自サイトのWordPressの管理画面を使用しました。

WordPressにJetpackというプラグインを追加すると
管理画面の上部から自サイトのお知らせを確認できます。

こちらのお知らせ画面にiframeが使用されているので
PythonからSeleniumを使用して、お知らせ画面の内容を取得します。

WebDriverの導入

Seleniumでブラウザを操作するにはWebDriverと呼ばれる実行ファイルを事前に
ダウンロードしておく必要があります。

Chromeの場合はChromeDriver – WebDriver for Chromeからダウンロードできます。

Downloads - ChromeDriver - WebDriver for Chrome
WebDriver for Chrome

 

FireFoxの場合はgithubのgeckodriverからダウンロードします。

mozilla/geckodriver
WebDriver for Firefox. Contribute to mozilla/geckodriver development by creating an account on GitHub.

ダウンロードしたexeファイルは.pyファイルと同じパスに設置します。

今回はChromeのWebDriverを使用しました。

Seleniumでiframeの内容を取得する

PythonからSeleniumを動かしてiframeの内容を取得するコードは以下のようになります。

重要な箇所はswitch_to.frameでiframeタグに切り替えるところです。

seleniumのfind_elementを利用してiframeの要素を変数に格納後
switch_to.frameでiframe変数にフレームを切り替えています。

フレームを切り替えたあとは、seleniumのfind_elementを使用して
iframe内の要素を取得して操作できます。

コメント