「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」のバージョンを変えながらデプロイを続けていました。
皆様はお気を付けください。結果的に関係ありませんでした。