Docker 環境での ChromeDriver ver. 115 以降の取得先変更対応
この記事の概要
Docker で利用していた ChromeDriver の取得先が ver. 115 から変わったことに気づいたため、Dockerfile の取得先や zip の展開方法を更新対応した内容になります。
事象
2023-08-15 17:00(UTC) 頃、Docker 内で ChromeDriver を使おうとしたところ以下のようなエラーが発生しました。
#0 0x000000000000 <unknown>: session not created: This version of ChromeDriver only supports Chrome version 114 (Selenium::WebDriver::Error::SessionNotCreatedError)
Current browser version is 116.0.5845.96 with binary path /usr/bin/google-chrome
driver の version が 114 に対し browser の version が 116 であるためのようです。
原因
エラーに記載されている通り、apt-get で install している google-chrome-stable と ChromeDriver のバージョンが異っていました。
探してみると Chromium の公式である https://chromedriver.chromium.org/downloads にも記載されている通り、Chrome version 115 以降は Chrome for Testing のダッシュボードを参照するようにとされています。
そのため Chrome version 115 以降の最新 version code の取得先と、実際の ChromeDriver の取得先を更新する必要があります。
対応
以下のように更新しました!
- RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` \
- && curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip
+ RUN CHROMEDRIVER_VERSION=`curl -sS https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_STABLE` \
+ && curl -sS -o /tmp/chromedriver_linux64.zip https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROMEDRIVER_VERSION/linux64/chromedriver-linux64.zip
上記 URL にある通り、version は GitHub から、ChromeDriver は edgedl.me.gvt1.com から取得するように変更しました。
フォルダに入るようになっていた
114 までは unzip すると ChromeDriver の実行ファイルがあったのですが、115 からはライセンスファイルも含んでいるため /usr/local/bin/
配下に移動させる場合はフォルダ以下の実行ファイルを移動させる必要があります。
- RUN mv chromedriver /usr/local/bin/
+ RUN mv chromedriver-linux64/chromedriver /usr/local/bin/
終わりに
E2E テストなどで Selenium を利用している場合などでも遭遇するエラーかと思い、記事にしてみました。
どなたかの参考になれば幸いです。
Discussion