HerokuにChromeとChrome driverを入れておく

Seleniumwebdriverphantomjsからgoogle chromeに変更した。

気づいたらphantomjsがメンテナンスが終了してた。 なので、Seleniumで使用しているwebdriverを別のものにしておきたいと思った。

どうやら、google chromeにヘッドレスモードがあるので、それを利用しましょうとのことだ。

Heroku上でも、phantomjsを使っていたので、こちらをchromeに変更するまでを書き残しておく。

Herokubuildpackを使えばいい。

buildpackの追加

Herokuのウェブサイト上のアプリケーションページのSettingsからAdd buildpacksをクリックし、Enter URLから

  • https://github.com/heroku/heroku-buildpack-google-chrome.git
  • https://github.com/heroku/heroku-buildpack-chromedriver.git

の2つを追加する。

次のデプロイ時に反映される。

chrome webdriverの指定

バイナリは、/app/.apt/usr/bin/google-chromeにある。バイナリの場所もオプションで指定する。(後述)

driverは引数から推測すると、chromedriverでいいようだ。 Herokuの環境変数として設定しておく。

heroku config:set CHROME_DRIVER_PATH=chromedriver
heroku config:set CHROME_BINARY_LOCATION=/app/.apt/usr/bin/google-chrome

そして、ヘッドレス起動させるためのオプションを付ける。 Heroku環境であれば、chrome_binary_pathbinary locationとしてセットする。

from selenium.webdriver.chrome.options import Options
options = Options()
# Heroku以外ではNone
if chrome_binary_path: options.binary_location = chrome_binary_path
options.add_argument('--headless')

を追加し、

driver = Chrome(executable_path=driver_path, chrome_options=options)

オプションを引数として渡せば良い。--headlessの行をコメントアウトすれば、GUIが表示されるが、 Herokuではしないほうがいいだろう。

コメント

タイトルとURLをコピーしました