#author("2016-12-13T11:02:16+09:00","default:yakumo_murakami","yakumo_murakami")
[[Ruby]]
Firefox48でSeleniumまわりの修正が入ったのが原因みたいね。
対応だけど、 geckodriverっていうのを別途インストールしないとダメみたい。試してみたわ。特にうちの場合、任意のプロファイルを使いたかったので。
* テスト環境 [#k17dfb59]
- Debian stretch (amd64)
- ruby 2.3.1
- Firefox
- profile名は「default」
* 手順 [#pc78b9b1]
** Firefoxと日本語フォントが入ってないならインストールする。 [#y3c287e8]
手順はそれぞれ。
** Rubyが入ってないならインストール。あとffiとxvfbも。 [#dd8802f9]
$ sudo aptitude install ruby ruby-ffi xvfb
** selenium-webdriverと、headlessをインストール [#o1da8ddd]
$ sudo gem install selenium-webdriver
$ sudo gem install headless
** geckodriverをインストール [#n15f48fc]
ソースで落としてもいいけど、Debian stretchではバイナリで良かったみたい。
$ wget https://github.com/mozilla/geckodriver/releases/download/v0.11.1/geckodriver-v0.11.1-linux64.tar.gz
$ tar -zxvf geckodriver-v0.11.1-linux64.tar.gz
$ sudo mv -v geckodriver /usr/local/bin/
** テストコードを実行する。 [#gb91f8c3]
ちなみにコードも今までとちょっと違うのよ。古いコードがあるならテスト必須ね。
#!/usr/bin/ruby -EUTF-8
require 'selenium-webdriver'
require 'headless'
page = Hash.new
page["name"] = "webdrivertest"
page["url"] = "http://www.google.co.jp/"
headless = Headless.new
headless.start
profile = Selenium::WebDriver::Firefox::Profile.from_name "default"
caps = Selenium::WebDriver::Remote::Capabilities.firefox(firefox_profile: profile)
driver = Selenium::WebDriver.for :firefox, marionette: true, desired_capabilities: caps
driver.get page["url"]
old = ""
source = ""
while 1
sleep 1 # 表示待ち
source = driver.page_source
if source != old
old = source.clone
else
break
end
end
driver.save_screenshot page["name"]+".png"
File.write(page["name"]+".html",source)
driver.quit
headless.destroy