Selenium-RCをRubyで試す
Seleniumでテストをしてゆきたいんだけど、Railsで使うパターンは結構みかけるものの、単純にRubyで制御したいだけの記事がちょっと見つからなかった。ということでテスト。
試した環境は以下の通り
まずは、Selenium-RCをダウンロード(1.0 beta1)
http://selenium-rc.openqa.org/download.html
これを解凍すると以下のフォルダが展開される。
- selenium-dotnet-client-driver-1.0-beta-1
- selenium-python-client-driver-1.0-beta-1
- selenium-java-client-driver-1.0-beta-1
- selenium-ruby-client-driver-1.0-beta-1
- selenium-perl-client-driver-1.0-beta-1
- selenium-server-1.0-beta-1
- selenium-php-client-driver-1.0-beta-1
サーバーシステムは「selenium-server-1.0-beta-1」のフォルダに入っているので、この中の「selenium-server.jar」を起動する。
$java -jre selenium-server.jar
これでlocalhsot:4444で起動する(オプションは「java -jar ./selenium-server.jar -help」で確認できる)。
ここでテストするパターンをつくる為に、Firefox->SeleniumIDEを起動する。試しとしては、Googleにアクセスして「Ruby」のキーワードで検索して「Rails」のキーワードで検索させてみよう(特に動きに意味は無い)。
この動作を記録したら、「オプション」->「フォーマット」を選択して「Ruby」フォーマットに変換する。
そうすると以下のスクリプトができるので、それを保存する(google.selとした)
require "selenium" require "test/unit" class NewTest < Test::Unit::TestCase def setup @verification_errors = [] if $selenium @selenium = $selenium else @selenium = Selenium::SeleniumDriver.new("localhost", 4444, "*chrome", "http://change-this-to-the-site-you-are-testing/", 10000); @selenium.start end @selenium.set_context("test_new") end def teardown @selenium.stop unless $selenium assert_equal [], @verification_errors end def test_new @selenium.open "/" @selenium.type "q", "ruby" @selenium.click "btnG" @selenium.wait_for_page_to_load "30000" @selenium.type "q", "rails" @selenium.click "btnG" @selenium.wait_for_page_to_load "30000" end end
setupメソッドの「Selenium::SeleniumDriver」の引数が適当になっているので、そこを編集する。編集個所はブラウザの種類と初期のサイトurlを入れればOK。
まずはFirefox経由でテスト
@selenium = Selenium::SeleniumDriver.new("localhost", 4444, "*firefox", "http://www.google.co.jp/", 10000);
ぬ、これはうまくいかないな。どうもFirefoxで新しいプロファイルを作りにいってるみたいで、放置しているとタイムアウトまで帰ってこない。Docに表示されているFirefoxを選択して「Command+Q」で停止してやるとなぜか起動してきて動作し始めるけど、こりゃ面倒だ。
safariならどうだろう。
@selenium = Selenium::SeleniumDriver.new("localhost", 4444, "*safari", "http://www.google.co.jp/", 10000);
こちらならスムーズテストが通過する。
$ruby ./google.sel Loaded suite ./google.sel Started . Finished in 4.460053 seconds. 1 tests, 1 assertions, 0 failures, 0 errors
MacでテストするならとりあえずSafariでテストするようにするかな。これで後は複雑なパターンをつくってテストスイートの形にしてみるようにしよう。