Cream-Kuchen

Heroku で GoogleChrome と ChromeDriver のバージョンを合わせる方法

はじめに

Herokuのbuild packでGoogle 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 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を合わせる方法を紹介しました。

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