ぼっちサーファーのブログ

一人海外サーフトリップの記録と雑記

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

2018/6/6〜25までバリ島一人サーフトリップの記録

リアルタイム更新の記事はこちら

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の使用量とかちゃんと記録してみたいんだけどさくっとやる方法ってあるのかな。
やったこと無いのでわかんない(;・∀・)
とりあえずは軽くなるのは間違いないので良さげです。