Selenium
のwebdriver
をphantomjs
からgoogle chrome
に変更した。
気づいたらphantomjs
がメンテナンスが終了してた。
なので、Selenium
で使用しているwebdriver
を別のものにしておきたいと思った。
どうやら、google chrome
にヘッドレスモードがあるので、それを利用しましょうとのことだ。
Heroku
上でも、phantomjs
を使っていたので、こちらをchrome
に変更するまでを書き残しておく。
Heroku
のbuildpack
を使えばいい。
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_path
をbinary 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
ではしないほうがいいだろう。
コメント