WebアプリケーションとExcelを自動的に操作して
ExcelのデータをWebアプリケーションに入力する
RPA関連の作業を仕事で行っています。
メインはUi PathというRPAツールを使用していますが
Webアプリケーション内にiframeタグが使用されている箇所については
一筋縄ではいきません。

iframeが使用されている箇所はPythonからSeleniumを使用して操作を行ってみます。
PythonでSeleniumの導入
PythonでSeleniumを使用するにはpipコマンドを使用します。
Anacondaがインストールされている環境ではcondaコマンドでもインストールできます。
1 2 3 |
pip install selenium または conda install selenium |
適当なiframeタグを使用しているサイトが見つからなかったので
自サイトのWordPressの管理画面を使用しました。
WordPressにJetpackというプラグインを追加すると
管理画面の上部から自サイトのお知らせを確認できます。
こちらのお知らせ画面にiframeが使用されているので
PythonからSeleniumを使用して、お知らせ画面の内容を取得します。
WebDriverの導入
Seleniumでブラウザを操作するにはWebDriverと呼ばれる実行ファイルを事前に
ダウンロードしておく必要があります。
Chromeの場合はChromeDriver – WebDriver for Chromeからダウンロードできます。
FireFoxの場合はgithubのgeckodriverからダウンロードします。
ダウンロードしたexeファイルは.pyファイルと同じパスに設置します。
今回はChromeのWebDriverを使用しました。
Seleniumでiframeの内容を取得する
PythonからSeleniumを動かしてiframeの内容を取得するコードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from selenium import webdriver driver = webdriver.Chrome() driver.get('自分の管理サイトのURL') iframe = driver.find_element_by_id('wpnt-notes-iframe2') driver.switch_to.frame(iframe) # 取得したインラインフレームにスイッチ notification_element = driver.find_element_by_class_name('wpnc__notes') elements = notification_element.find_elements_by_class_name('wpnc__text-summary') for element in elements: # 取得したお知らせに対して処理を行う |
重要な箇所はswitch_to.frameでiframeタグに切り替えるところです。
seleniumのfind_elementを利用してiframeの要素を変数に格納後
switch_to.frameでiframe変数にフレームを切り替えています。
フレームを切り替えたあとは、seleniumのfind_elementを使用して
iframe内の要素を取得して操作できます。
コメント