Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法(使用例:Chrome用、SeleniumVer4.6以降)

 

Seleniumを使用してWeb情報取得、操作を行っている場合に必要となることの1つにフレーム間移動があります。

 

Webサイトがフレーム構造となっており、親フレーム、子フレームなどの階層構造になっている場合があります。

 

そのような場合に該当する要素の情報取得や操作を行う場合には、その要素が存在しているフレームまで移動してから取得、操作を行う必要があります。

 

フレーム間移動の例を以下に記載しておきます。

 

 

 

目次

 

 

1.子フレームへの移動

 

driver.switch_to.frame(driver.find_element(By.NAME,"frame_a"))

 

フレーム移動として上記のように記載することで、現在の位置から「frame_a」という名前の子フレームへ移動することができます。

 

2.子フレームへの移動(指定時間待機)

 

#指定したdriverに対して最大で10秒間待つように設定する
wait = WebDriverWait(driver, 10)
#指定されたフレームが利用出来るまで待機する wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME, "frame_a")))

 

また、フレーム移動の場合には移動指定をしてもフレーム間移動に時間がかかる場合があります。

フレームを移動しきらないうちに要素取得など次の操作を行おうとすると、そのような要素はないというようなエラーが発生します。

そのような場合には、上記2行のように記載することで、子フレームへ移動する場合に最大で指定した秒数待つことが出来ます(上記の場合は10秒)。

 

3.親フレームへの移動

 

#親フレームに戻る
driver.switch_to.parent_frame()

 

子フレームへ移動した後などに元の親フレームへ移動したい場合には、上記のように記載することで今いる位置から親フレームへ移動することが出来ます。

 

4.使用例

 

selenium ver.4.6以降の場合)

from selenium import webdriver

######################################################################
driver = webdriver.Chrome()  ###################################################################### driver.get('https://www.********.com/')
#子フレームに移動
driver.switch_to.frame(driver.find_element(By.NAME,"frame_a"))

#親フレームに戻る
driver.switch_to.parent_frame()

 

フレーム構造になっているようなサイトの場合という例になりますが、

 

'https://www.********.com/'というURLのサイトにアクセス後、

 

子フレーム"frame_a"に移動し、また、親フレームである元の位置に戻るような内容です。

 

 

尚、Seleniumのバージョンアップでウェブドライバーの設定方法が変わったこともあり、上記の例はSelenium Ver.4.6以降の場合の例として記載しています。

 

 Ver.4.6以前の場合については以下の過去記事などで載せています。

違いはドライバーの設定方法だけですが。

 

kuku81kuku81.hatenablog.com

 

 

以上がフレーム間移動方法の説明になります。

 

 

また、PythonにてSeleniumを活用してスクレイピング、RPA化などを行っていく場合に必要となりそうな内容の記事を一覧として以下にまとめましたのでよかったらご参照ください。

 

 

kuku81kuku81.hatenablog.com

 

 

 

関連記事:

【python】実行ファイル(EXEファイル)作成手順 - Django Girls and Boys 備忘録

 

【Python カレントディレクトリ取得】Excelファイル指定を使った簡単な例記載 - Django Girls and Boys 備忘録

 

【Pythonでopenpyxlを使用したExcelファイルの読み書き方法】xlsmファイル(マクロありファイル)の場合 - Django Girls and Boys 備忘録

 

【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録

 

【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録

 

【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール - Django Girls and Boys 備忘録

 

【Python Selenium】ブラウザ用ドライバーのインストール、設定とWebサイトへのアクセス方法 - Django Girls and Boys 備忘録