#python #tech

Chrome CanaryとChromeDriverのバージョン不一致問題

# ブラウザを起動
options = Options()
options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
options.add_argument('--headless')
options.add_experimental_option('prefs', {
    'download.prompt_for_download': False,
    'download.default_directory': '/tmp',
    'download.directory_upgrade': True
})
driver = webdriver.Chrome(options=options)

というようなスクリプトを久々に動かして、headlessじゃなくてもいいなと思ったので下記のようにコメントアウトして動かしたところ、Seleniumを通してエラーが発生するようになった。

# ブラウザを起動
options = Options()
options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
# options.add_argument('--headless') # 実際に動作確認したいのでヘッドレスじゃなくてもいいな!
options.add_experimental_option('prefs', {
    'download.prompt_for_download': False,
    'download.default_directory': '/tmp',
    'download.directory_upgrade': True
})
driver = webdriver.Chrome(options=options)

発生するエラーはこんな感じ。

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 97

要するにGoogle CanaryとChromeDriverのバージョンが合っとらんぞと言っているような気がする。おそらくヘッドレス状態だと自動的にアップデートされないけれど、ヘッドレスを外して起動してしまったため、Google Canary本体だけアップデートされ、ChromeDriverとのバージョン不一致が起きてしまったのだろう。

今のGoogle CanaryのバージョンをUIから確認する。

ChromeDriverのバージョン。

$ pip list
Package             Version
------------------- --------------
chromedriver-binary 97.0.4692.20.0

まぁこれがぴったり一致してなければ動かないかはわからないけど、ズレてるっちゃあズレてる。ので、ChromeDriverの方もアップデートする。

$ pip install --upgrade chromedriver-binary
Requirement already satisfied: chromedriver-binary in /Users/you/.pyenv/versions/3.8.3/lib/python3.8/site-packages (97.0.4692.20.0)
Collecting chromedriver-binary
  Downloading chromedriver-binary-118.0.5955.0.0.tar.gz (5.6 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: chromedriver-binary
  Building wheel for chromedriver-binary (pyproject.toml) ... done
  Created wheel for chromedriver-binary: filename=chromedriver_binary-118.0.5955.0.0-py3-none-any.whl size=8839931 sha256=15db2ca837623262f50a6838200c2a30b1a5b1d669495e90b0941bae3c2401df
  Stored in directory: /Users/you/Library/Caches/pip/wheels/d1/b2/35/cc76f63e8d5ec9c05a3cc26e53497e26d6aa1b332e8c0f08a3
Successfully built chromedriver-binary
Installing collected packages: chromedriver-binary
  Attempting uninstall: chromedriver-binary
    Found existing installation: chromedriver-binary 97.0.4692.20.0
    Uninstalling chromedriver-binary-97.0.4692.20.0:
      Successfully uninstalled chromedriver-binary-97.0.4692.20.0
Successfully installed chromedriver-binary-118.0.5955.0.0

$ pip list
Package             Version
------------------- --------------
chromedriver-binary 118.0.5955.0.0

これで動いた。