#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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS