Cream-Kuchen

How to match Chrome version with Driver on Heroku

はじめに

Herokuのbuild packでchromechrome 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 85.0.4183.102 unknown

heroku run chromedriver -v -a [your-app-name]
>> ChromeDriver 85.0.4183.87

※ 大括弧 [your-app-name] にアプリ名を入れてください。

上記例の場合、いずれもversionが前2桁「85」で一致しています。

4, 不一致への対処

chromeに合わせてdriverのversionを環境変数に設定してください。


設定する際、chromeに対応するdirverのバージョンは下記を参照して下さい。

Downloads - ChromeDriver - WebDriver for Chrome



    【具体例】
    chromeのversionが85の場合、driverのversionの環境変数には「85.0.4183.87」を設定
    環境変数のKeyは、「CHROMEDRIVER_VERSION」とする。

heroku config:set -a [your-app-name] CHROMEDRIVER_VERSION="85.0.4183.87"

    ※ 大括弧 [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を合わせる方法を紹介しました。

対症療法的なやり方になりますが、役立てて頂ければ幸いです。