Selenium::WebDriverでデフォルトで引数を渡すようにする
SeleniumでChromeをheadlessで使おうとすると複数のオプションがあって、バージョンによって必要なオプションが変わるなど面倒なことが山盛りなので、せめて一箇所で設定できるようにデフォルトで読み込むオプション設定を決めることにしました。
ブラウザの種別によって引数が違うので必要なブラウザの物のみ設定してます。以前はphantomjs
やfirefox
も設定してたけど、必要なくなったのでChromeのものだけですが、これを参考に適当に追加してください。
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)