LoginSignup
6
2

More than 1 year has passed since last update.

webdriver-manager で Chrome webdriver を自動更新する

Last updated at Posted at 2021-10-04

#問題

  • PythonでChrome webdriverを使っていると、Chrome本体とのバージョンの不整合で、頻繁にアップデートが必要になる。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 90
Current browser version is 94.0.4606.71 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
  • 面倒くさいので自動化したい。

#解決方法

  • モジュール webdriver-manager を用いることで自動化できる。

##インストール
$ pip install webdriver-manager

#コードの改変

  • 元のコードの例
import chromedriver_binary
from selenium.webdriver import Chrome
driver = Chrome()
  • 改変後のコードの例
# import chromedriver_binary
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver import Chrome
# driver = Chrome()
driver = Chrome(ChromeDriverManager().install())
  • 実行すると、Chromeのバージョンに合ったドライバをインストールしてくれる
====== WebDriver manager ======
Current google-chrome version is 94.0.4606
Get LATEST driver version for 94.0.4606
There is no [mac64] chromedriver for browser 94.0.4606 in cache
Get LATEST driver version for 94.0.4606
Trying to download new driver from https://chromedriver.storage.googleapis.com/94.0.4606.61/chromedriver_mac64.zip
Driver has been saved in cache [/Volumes/Home/ynaito/.wdm/drivers/chromedriver/mac64/94.0.4606.61]

2022.10.17時点での問題点と姑息的対応

  • Google が Chromeドライバの名称をchromedriver_mac64_m1.zipからchromedriver_mac_arm64.zipに変更したために、以下のようなエラーを吐く。
ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/106.0.5249.61/chromedriver_mac64_m1.zip
  • 緊急避難的な対応として、.../site-packages/webdriver_manager/core/download_manager.py の末尾から2行目(執筆時点で28行目)の
        response = self._http_client.get(url)

        response = self._http_client.get(url.replace('chromedriver_mac64_m1', 'chromedriver_mac_arm64'))

に書きかえて対応している。(webdriver_managerが対応するまでの弥縫策)

おしまい

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2