【Ruby Mac】SeleniumでFirefoxをヘッドレスモードで使う

Firefox 55からヘッドレスモードが搭載されました(ただしLinux版のみ)
2017年9月28日に正式版がリリースされたFirefox 56からはWindows/Macでもヘッドレスモードが利用可能です。

developer.mozilla.org

ヘッドレスモードを試したかったのでFirefox45から56にアップデートしSeleniumで動かしてみました。



Firefoxをダウンロード

現時点の最新版は Firefox 56
Firefox をダウンロード — 無料ウェブブラウザー

起動オプションに-headlessをつければヘッドレスモードで起動します。
起動しますがヘッドレスなのでわかりませんw

Seleniumを最新版にアップデート

2.53.0のままだったので最新(3.6.0)にアップデート。

gem update selenium-webdriver

とりあえず起動してみる

Firefox 45と同じプログラムではgeckodriverが見つからないとの旨のエラー。

Uncaught exception: Unable to find Mozilla geckodriver. Please download the server from https://github.com/mozilla/geckodriver/releases and place it somewhere on your PATH. More info at https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver.

Firefox47以降はgeckodriverなるものが必要とのこと。
下記からダウンロード
Releases · mozilla/geckodriver · GitHub

パスが通ってるところコピーする。またはパスを通す。
今回は /usr/local/bin にコピーしました。

ヘッドレスモードを試す

これでとりあえず動くようになったのでヘッドレスモードで起動。
オプションに -headless を付けて起動すればOK

require “selenium-webdriver”

options = Selenium::WebDriver::Firefox::Options.new
options.add_argument(‘-headless’)

driver = Selenium::WebDriver.for :firefox, options: options
driver.navigate.to “http://google.com

element = driver.find_element(name: ‘q’)
element.send_keys “Hello WebDriver!”
element.submit

puts driver.title

driver.quit

メモリの消費量を比べてみる

上記のヘッドレスモードのオプションあり、なしで起動
2割ぐらい違うね。
f:id:Apps:20171003200624j:plain

別のもうちょっと重い処理。
結構違うし実際全然軽い。
f:id:Apps:20171003201726j:plain
f:id:Apps:20171003201733j:plain

総評

えらくあっさり動いたなぁ。
Seleniumは自身のバージョンとブラウザのバージョンで色々苦労した思い出しか無い。

メモリ、CPUの使用量とかちゃんと記録してみたいんだけどさくっとやる方法ってあるのかな。
やったこと無いのでわかんない(;・∀・)
とりあえずは軽くなるのは間違いないので良さげです。

コメントを残す

メールアドレスが公開されることはありません。