Techioz Blog

macOS を ventura (ruby/rails) にアップデートした後、Chromedriver バージョン 114 が現在の Chrome ブラウザ (118) を使用しようとします

概要

最近、OS を ventura (sonoma に変更する直前) に更新しましたが、それ以来、次のエラーのため、Capybara を使用するスペックで rspec を使用できなくなりました。

Selenium::WebDriver::Error::SessionNotCreatedError:
  session not created: This version of ChromeDriver only supports Chrome version 114
  Current browser version is 118.0.5993.117 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

アップデート前には、これは決して問題ではありませんでした。私たちのアプリはRails 6.0.6.1とruby 2.6.6p146を使用しています

Ruby/Rails のアップグレードを目指して頑張っていますが、その間は selenium-webdriver 4.11+ gem を使用できず、現在 3.142.7 で止まっており、その結果、最大値で止まっています。 chromedriver バージョン 114.0.5735.90

これを徹底的に調査しました。Chromedriverはインストールされ、適切に構成されています。問題は、インストールされているバージョンのChromeを使用しようとしていることであり、現在、対応する114バージョンではなく118.0.5993.117が使用されるべきであり、以前は使用されていました。

解決策が Rails/Ruby/Gems をアップグレードすることであることはわかっています。私が取り組んでいることを信じてください。しかし、これは非常にオーダーメイドの問題であるため、どこにも解決策を見つけることができませんでした。私が見つけたものはすべていくつかのものです数年前、Chromedriver のバージョン 114 以降からの変更に関連していましたが、その後、Selenium 4.11 によってほとんどの人にとってこの問題は解消されました。

ここで私の特定のバージョンのChromeをダウンロードしようとしましたが、うまくいきませんでした。これは、Selenium 4.11以降が使用している114以降のオプションである可能性があり、115未満では利用できません。

編集: brew を通じて chromedriver のバージョンを更新しようとしましたが、次のエラー メッセージが表示されます。

Webdrivers::VersionError:
            Unable to find latest point release version for 118.0.5993. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html

私の知る限り、これが Selenium 4.11 以前と後の完全な違いです。前者はインデックスを参照して正しいバージョンを見つけます (114 より大きいものは見つかりません)。後者は現在のリリースを取得します。 Selenium 4.11 以下で chromedriver 114 以上を使用するように指示する方法がある場合は、教えてください。必要なバージョンを手動で設定すると、次の結果が得られます。

Webdrivers::NetworkError:
              Net::HTTPServerException: 404 "Not Found" with https://chromedriver.storage.googleapis.com/118.0.5993.70/chromedriver_mac64.zip

言い換えれば、それ (webdrivers gem) はまだ新しいバージョンの古い場所を探しています。

編集:究極の解像度

この問題に対する解決策は見つからず、私の会社はまだ Ruby/Rails をアップグレードしていませんでしたが、github コードスペースを使用してスペックを実行し、以下を Dockerfile に追加することでセットアップすることで、この問題を回避することができました。

# Setup ChromeDriver
ARG CHROMEDRIVER_VERSION=114.0.5735.90

# Install Google Chrome and ChromeDriver
RUN wget -q https://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip \
    && unzip chromedriver_linux64.zip \
    && rm chromedriver_linux64.zip \
    && mv chromedriver /usr/local/bin/
RUN wget -q -O google-chrome.deb https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.90-1_amd64.deb \
    && dpkg -i google-chrome.deb \
    && apt-get install -y -f \
    && rm google-chrome.deb

解決策

Selenium 4.9.1 を試し、Chromedriver を 119.0.0 に更新してください。

更新後、これでうまくいきました。