Heroku で GoogleChrome と ChromeDriver のバージョンを合わせる方法
はじめに
Herokuのbuild packでGoogle ChromeとChrome Driverを入れているのに、
ブラウザの立ち上げに失敗することはありませんか?
原因の1つに、chromeのversionをdriverがサポートしていない可能性があります。
その対処法を紹介します。
目次
1, 可能性のあるエラー
下記のようなエラーが出ている場合、versionの不一致が原因かもしれません。
This version of ChromeDriver only supports Chrome version XX
2, 不一致の原因
build packでchromeとdriverを設定しwebアプリをデプロイすると、
chrome:デプロイ時点の安定版 (stable)
driver:デプロイ時点の最新版 (latest)
これらがインストールされます。
そのため、安定版と最新版のversionが異なる場合があります。
3, versionの確認
下記のコマンドで確認できます。
heroku run google-chrome --version -a [your-app-name] >> Google Chrome 90.0.4430.93 unknown heroku run chromedriver -v -a [your-app-name] >> ChromeDriver 90.0.4430.24
※ 大括弧 [your-app-name] にアプリ名を入れてください。
上記例の場合、いずれもversionが前2桁「90」で一致しています。
4, 不一致への対処
chromeに合わせてdriverのversionを環境変数に設定してください。
設定する際、chromeに対応するdirverのバージョンは下記を参照して下さい。
ChromeDriver - WebDriver for Chrome - Downloads
【具体例】
chromeのversionが90の場合、driverのversionの環境変数には「90.0.4430.24」を設定
環境変数のKeyは、「CHROMEDRIVER_VERSION」とする。
heroku config:set -a [your-app-name] CHROMEDRIVER_VERSION="90.0.4430.24"
※ 大括弧 [your-app-name] にアプリ名を入れてください。
設定後、webアプリを再度デプロイするとversionの揃ったchromeとdriverがインストールされます。
※ 環境変数の設定方法はこちらの記事も参照してください。
cream-kuchen.hatenablog.com
5, 根本的な対処(無し)
本来、chromeもdriverもversionを固定してインストールできれば、不一致は起こりません。
しかし、調べる限り両者を予め一致させる方法は見つかりませんでした。
そのため、webアプリ本格運用前にversionの不一致を確認する方法は下記2点ではないでしょうか。
webアプリのデプロイ時に、ログを目で追ってそれぞれのversionを確認
webアプリのデプロイ後に、上述した「versionの確認」で適宜確認
※ 有効な方法があればご紹介頂きたいです。
おわりに
Herokuのchromeとdriverのversionを合わせる方法を紹介しました。
対症療法的なやり方になりますが、役立てて頂ければ幸いです。