酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Rubyでブラウザを操作できるGem Watir

この1週間での個人的に大発見だったGem 『watir』の紹介です。このGemはRubyでブラウザを操作できるGemです。シンプルにはブラウザ(chromeやie、firefoxなど)を使ってのテスト自動化や、javascriptの実行結果を取得するといったことが可能です。 アイデアしだいでさらに応用が効きそう!


Gemのインストール

Gemfileに以下を追加して、コンソールでbundleを実行してください。

1
2
3
# webブラウザの操作
gem 'watir' # for IE
gem 'watir-webdriver' # for Firefox/Chrome

ブラウザ用のドライバの導入

Chrome, IE, firefox, safariの導入手順(英語)はこちら。

Chrome | Watir WebDriver
Firefox | Watir WebDriver
Internet Explorer | Watir WebDriver
Safari | Watir WebDriver

Chromeを使ってのブラウザ操作の自動化

今回はChromeを使う方法を試してみます。 まずは、Chromedriverをダウンロード

ダウンロードしたファイルを回答して、PATHが通っている場所に置く。

1
echo $PATH #<= ここで出た場所の何処かに置くか、PATHを追加してそこに置く

次にRubyでChromeを操作して、ログインを行うテストです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require "rubygems"
require "watir"
require "watir-webdriver"

email = "あなたのグーグルログインアドレス"
password = "あなたのパスワード"

browser = Watir::Browser.new :chrome
browser.goto("https://accounts.google.com/ServiceLogin?hl=ja&continue=http://www.google.com/search%3Fq%3Dgoogle%26aq%3Df%26oq%3Dgoogle%26sourceid%3Dchrome%26ie%3DUTF-8")

element = browser.text_field(:name, "Email")
element.flash
element.value = email

element = browser.text_field(:name, "Passwd")
element.flash
element.value = password

element = browser.button(:name, "signIn")
element.flash
element.click

browser.wait # ブラウザの読込完了まで待機
puts browser.html
puts browser.url

これでRubyがブラウザを起動して、URLを出力してくれるようになります。 アイデア次第でいろいろなことに応用できそうです!何かの引き出しに使って下さい!

公式サイト

watirの公式Githubです。

watir/watir · GitHub

Special Thanks

http://qiita.com/items/389d75daa97e9d2275cc

5分でわかるWatir - にのせき日記

watirでjavascriptの実行結果として返されるhtmlを取得する - souichiの日記

おすすめの書籍