heroku Python

[2022年版] herokuでselenium実行時の「This version of ChromeDriver only supports Chrome version XXX」エラーを解決

「selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 103
Current browser version is 102.0.5005.115 with binary path /app/.apt/usr/bin/google-chrome」

herokuにて既に何度も実行したことがあったPythonのプログラムを実行した際、

ソースコードの内容は一切変えていないのに上記のエラーが出ました。このエラーを解決した際の備忘録です。

まだまだherokuに関する知識が曖昧ですので、用語や知識が追い付いておりません。どうかご了承ください。

原因とエラー内容

「selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 103
Current browser version is 102.0.5005.115 with binary path /app/.apt/usr/bin/google-chrome」

の内容にある通り、「herokuにある、あなたのChromeDriverのバージョンとchromeブラウザのバージョンが違いますよ。」というエラーであることは分かったが、heroku内のchromeバージョンやdriverのバージョンをアップデートあるいはダウングレードしたことが無かったので少々躓きました。

また、こちらでchromeバージョンもしくはdriverのバージョンを更新した覚えが一切なかったので、勝手に更新される設定になっているのか、あるいはheroku側で一斉更新したのか、、、、

原因は分かりませんが解決に向けて進んでいきます。

現在のドライバーとブラウザのバージョン確認

上記のように

heroku run google-chrome --version -a [your-app-name]

で google-chrome(ブラウザのバージョン)を調べられます。(your-app-nameは使用するherokuのapp名)

また、

heroku run chromedriver -v -a [your-app-name]

chromedriver (ドライバーのバージョン)を調べられます。

結果的にブラウザは102.0.5005.115、ドライバーは103.0.5060.53ということでずれてしまっています、、、

ブラウザに適合したドライバーを調べる

WebDriver for Chrome - Downloads

上記のサイトでブラウザのバージョンに適合したドライバーのバージョンを調べます。

上の画像は現時点のサイトの様子で、ピンク色で示している私のブラウザ(バージョン102)に適合しているドライバーが102.0.5005.61であることが読み取れます。

コマンドプロンプトを起動し、herokuにログイン

cmdにてカレントディレクトリを(私であれば)githubと連携しているフォルダへと移動します。

その後、herokuのエラーが出たapp名のところにログインしてください。

適合したドライバーをherokuに導入し、無事解決

「heroku config:set -a [your-app-name] CHROMEDRIVER_VERSION = "XXXXXXXXX"」

のコマンドでドライバーを導入してください。"XXXXXXXXX"には先ほどの工程で調べたドライバーのバージョンを入れてください。

導入後は、デプロイしなければ更新されません。

「git commit --allow-empty -m "empty commit"でコードに更新がなくてもデプロイできるので、やってみてください。

デプロイ後、再びドライバーのバージョンを確認してみると先ほど導入したバージョンになっていることが確認できました。

その後、エラーが出たプログラムを実行してみると無事エラー無く実行できました。

requirements.txtが問題だと思っていたが関係無し

なぜか私はgithubと連携しているフォルダにある「requirements.txt」(導入するライブラリの一覧表的なもの)が原因だと思い、かなりの時間「chromedriver-binary」のバージョンを変えながらデプロイを続けていました。

皆様はお気を付けください。結果的に関係ありませんでした。