SeleniumをRubyから呼んでみる

Gemfileを作って編集する。

bundle init
vim Gemfile

入力内容は下記の通り。

source "https://rubygems.org"
gem "selenium-webdriver", "‾> 2.38.0” 

bundle installを実行する。

bundle install --path vendor/bundle 

rubyスクリプトファイルを作成する。

vim drive.rb

内容は下記の通り。

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"

element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit

puts "Page title is #{driver.title}"

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }

puts "Page title is #{driver.title}"
driver.quit 

実行してみる。

ruby drive.rb

怒られる。selenium-webdriverが読み込めない模様。

`require': cannot load such file -- selenium-webdriver (LoadError)

bundle exec で実行してみる。

bundle exec ruby drive.rb

怒られる。firefoxがインストールされてないから?

Could not find Firefox binary (os=macosx). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path= (Selenium::WebDriver::Error::WebDriverError)

chromeに変えてみて、再実行。やっぱり怒られる。chromedriverが無いとダメらしい。

Unable to find the chromedriver executable. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at http://code.google.com/p/selenium/wiki/ChromeDriver. (Selenium::WebDriver::Error::WebDriverError)

言われたとおり、http://chromedriver.storage.googleapis.com/index.html をブラウザで開いて、最新版(2.7)のmac用をダウンロード。 解凍すると、 chromedriver というファイルが出てくるので、PATHが通っているディレクトリに移動。

で、再実行。

bundle exec ruby drive.rb

無事ブラウザが開き、googleの検索結果が表示され、消えた。 コンソールには

Page title is Google
Page title is Cheese! - Google 検索

が表示されてた。

・公式のサンプルコードなど
http://docs.seleniumhq.org/docs/03_webdriver.jsp
・参考になりそうなところ
http://qiita.com/tomerun/items/9cb81d7a98150ff22f53
http://morizyun.github.io/blog/selenium-scraping-webdriver-ruby/