webdriverを自動更新する方法[Webdriver Manager for Python]

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事ではwebdriverを管理するライブラリWebdriver Manager for Pythonrでwebdriverのバージョンを最新に保つ方法を試します。

はじめに

監視や自動テストなどで、seleniumを定常的に稼働させている場合を想定しています。
seleniumは各ブラウザベンダの提供するwebdriverを介してブラウザを操作しますが、そのwebdriverとブラウザのバージョンは適合していなければなりません。
しかしながら、ブラウザの自動アップデートによりバージョンがずれ、プログラムが動作しなくなるケースがあります。
具体的にはwebdriverとブラウザのバージョンが適合しない場合には[SessionNotCreatedException]が発生します。
そこで、webdriver_managerライブラリによるwebdriverのバージョン管理方法を試します。

環境

・Windows10
・selenium
・chromedriver(80.0.3987.106)
・Google Chrome(80.0.3987.106)
・Python3(3.7.1)

Webdriver Manager for Pythonrについて

ライブラリ名:webdriver_manager

The main idea is to simplify management of binary drivers for different browsers.

対応ブラウザ(2020/2時点)
・ChromeDriver
・GeckoDriver
・IEDriver
・OperaDriver

ソースを見た感じだと、Chromeのみブラウザのバージョンをチェックし対応するwebderiverを、それ以外のブラウザは最新のwebdriverを取得するようになっているようです。

サンプルコード

seleniumで指定URLを開くサンプルコードです。
3~7行目で、webdriverのバージョンが適当かチェックし、不適切な場合はダウンロードするようになっています。
driver_pathにwebdriver.exeのパスを入れ、webdriverを起動します。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# webdriver格納パスを指定する場合
custom_path = "/bin/webdriver/chrome/"
# webdriver.exeのパス
driver_path = ChromeDriverManager(path=custom_path).install()
driver = webdriver.Chrome(driver_path)
driver.get('https://www.yahoo.co.jp')
driver.quit()

上記のコードでは、webdriver起動ごとに最新のwebdriverのバージョンを取得する通信が生じるため、[SessionNotCreatedException]が発生したときのみwebdriver_managerで最新またはブラウザに応じたwebdriverを取得するような作りも良いかと思います。
webdriverは\drivers\chromedriver\80.0.3987.106\win32の形式で指定ディレクトリに作成され、chromedriver.zipとその解凍ファイルchromedriver.zipが格納されます。
なお、 ブラウザのバージョンに適合するwebdriverが存在しない場合はValueErrorが発生します。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*