これ僕.com:行動分析学マニアがおくる行動戦略

意図と行動のギャップから生じる「不自由さ」への挑戦。果たして僕たちに自由はあるのか?

Rails2.1でSelenium on Railsを使う

画面から叩くテストを自動化すべく、Selenium on Railsプラグインを導入してみた。

プラグインのインストール

% ruby script/plugin install http://svn.openqa.org/svn/selenium-on-rails/selenium-on-rails

次いで

% ruby script/server -e test

とサーバーを起動しようとしたところ、

undefined method `register_template_handler' for ActionView::Base:Class (NoMethodError)

というエラーが発生した。Rails2.1への移行でちらほら見かけるようなエラーな気がする。
これについてはOpenQA Forums Have Been Discountinuedでパッチが公開されているらしく、ダウンロードして適用した。

% cd vendor/plugin/selenium-on-rails
% wget http://clearspace.openqa.org/servlet/JiveServlet/downloa.... (省略)
% patch < rails_2.1.patch

パッチを適用するところで、途中、3回ほど対象ファイルのPathを聞かれてくるので、

とそれぞれ入力した。
再度、

% ruby script/server -e test

でサーバーを起動し、http://localhost:3000/seleniumにアクセスして動いていることを確認。

SeleniumIDEでテストケース作成

見つかりませんでしたからFireFoxのAddOnをインストールし、ツール→Selenium IDEで起動。
起動した状態で画面操作を記録する状態になっているので、テストケースに沿って画面を操作して、記録を終了させる。これで1つのテストケースができるけど、そのままだと画面遷移を待たずに操作をしちゃったりと都合が悪いので、適宜、「WaitForPageToLoad」とか「Pause」を入れていく。
で、ファイル→テストケースの保存 でテストケースが保存できる。
これをRAILS_ROOT/test/seleniumに入れておくと、http://localhost:3000/seleniumにアクセスした時に読み込んでくれるみたい。