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 に更新してください。
更新後、これでうまくいきました。