Blog

Rubyで簡単にIEを操作する3つの方法

 2012/07/25
このエントリーをはてなブックマークに追加

みなさんこんにちは。@ryuzeeです。

IEに関するテストを自動化したくて色々調べ中なので記録として公開しておきます。 確認している環境はWindows7 Professional 32bit版+IE9。RubyはRubyInstallerを利用しています。

watirを使う方法

watirはブラウザ操作のライブラリで、webdriverが出てくる前から存在しています。 過去から仕様が結構変わっており、現在では外部のライブラリ(win32screenshot)などを使わないとキャプチャが取れません。 さらに、win32screenshotは現時点では表示されている領域のみしか画像として保存できないので、検証目的で利用するには若干不十分と言えます。 ただ画面の要素の指定の仕方はwebdriverよりも楽です。

#-*- encoding: utf-8 -*-
require 'rubygems'
require 'watir'
require 'win32/screenshot'

ie = Watir::IE.start("http://www.ryuzee.com")
ie.text_field(:name => 's').set 'スクラム道'
form = ie.form(:id, "searchform")
form.submit
Win32::Screenshot::Take.of(:window, :hwnd => ie.hwnd.to_i).write("image4.png")
ie.close

以下の2つのケースはwebdriverを利用します。 この場合は、IEを動かす場合のみWindowsのPATHが通っている場所にIEDriverServerをインストールする必要があります(IE以外のブラウザの場合は不要です)。

watir-webdriverを使う方法

詳細はhttp://watirwebdriver.com/を確認してください。 この場合は隠れた部分も含めて画面キャプチャができます。 入力項目の指定が簡単なのが特徴の1つです。

#-*- encoding: utf-8 -*-
require 'rubygems'
require 'watir-webdriver'

browser = Watir::Browser.new(:ie)
browser.goto "http://www.ryuzee.com"
browser.driver.save_screenshot('image1.png')
browser.text_field(:name => 's').set 'スクラム道'
form = browser.form(:id, "searchform")
form.submit
browser.driver.save_screenshot('image2.png')
browser.close

selenium-webdriverを使う方法

最も一般的な方法と言えるでしょう。 ですが、画面要素の指定の仕方がWatir系に比べて面倒です!

#-*- encoding: utf-8 -*-
require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :ie
driver.get "http://www.ryuzee.com"
driver.save_screenshot('image3.png')
element = driver.find_element :name => "s"
element.send_keys "スクラム道"
element.submit
driver.quit

selenium-webdriverとwatir-webdriverの違いについてはこちらで詳しく解説されています。

なお、余談ですが、開発機のテストのためにSSL証明書のエラーが出たりするケースがよくあります。 この場合、FirefoxであればProfileを別で用意しておき、予め対象サーバのSSL証明書をセキュリティ例外として承認してしまえば良いのですが、IEの場合はちょっとうまい手がないので以下のようにします。

watir-webdriverの場合

browser.goto "https://74.125.235.112" # google
browser.driver.navigate().to("javascript:document.getElementById('overridelink').click()");

これでCucumberとかと組み合わせると楽しい感じですね。

それでは。

 2012/07/25
このエントリーをはてなブックマークに追加