SeleniumでChromeをheadlessで使おうとすると複数のオプションがあって、バージョンによって必要なオプションが変わるなど面倒なことが山盛りなので、せめて一箇所で設定できるようにデフォルトで読み込むオプション設定を決めることにしました。

ブラウザの種別によって引数が違うので必要なブラウザの物のみ設定してます。以前はphantomjsfirefoxも設定してたけど、必要なくなったのでChromeのものだけですが、これを参考に適当に追加してください。

'lib/selenium_web_driver_extension.rb'
module SeleniumWebDriverExtension
  def for(browser, *args)
    case browser
    when :chrome
      caps = Selenium::WebDriver::Remote::Capabilities.chrome(
          'chromeOptions' => {args: %w(--headless --no-sandbox --disable-gpu window-size=1280x800)}
      )
      super(browser, desired_capabilities: caps)
    else
      super(browser, *args)
    end
  end
end

Selenium::WebDriver.singleton_class.prepend(SeleniumWebDriverExtension)