[[FrontPage]]
#contents
** official [#r6be618d]
http://seleniumhq.org/projects/on-rails/
** 概要 [#p28c4a6d]
- テストケースをrubyで書ける(RSelenese)
- テストケースをwikiのテーブル記法で書ける(Selenese)
- 共通部分(indexを開く、ログインする等)を分けてincludePartialで再利用できる
- 複数の処理をrubyのeachを使って大量に生成できる(Rselenese, ex. (1..10).each {|c| RSelenese構文 })
- ただし、ページの状態からif文を使って条件分岐などはできないため、waitForConditionなどでJSを記述する必要あり
- railsのfixtureと組み合わせてテストできる
- テストケースをディレクトリでわけておくと、そのディレクトリ単位でテストスイートになる
- Selenium on Railsはただテーブルを生成するだけなので、表示されたページを保存しておけばSeleniumIDEなどから読み込むことができる
- テスト対象のページがrailsで作成されたものである必要は無い(fixtureを使う場合は同等の機能を作る必要あり(DBのダンプをロードするphpを作成しておき、テスト前にそのページをopenするなど))
** install [#qb3f9fba]
基本は上記urlに書いてある通りだが、まだrails2.2に対応していないため、rails2.2で使うためにはパッチを当てたgitリポジトリから
インストールする必要がある。
インストール例
script/plugin install git://github.com/paytonrules/selenium-on-rails.git
上記リポジトリのurl
http://github.com/paytonrules/selenium-on-rails/tree/master
officialのフォーラム
http://clearspace.openqa.org/message/53575
** テストケース [#kafe85f1]
Seleneseは .sel RSeleneseは .rselの拡張子で test/selenium/ 配下に記述するとファイル名をテストケース名として自動で読み込んでくれる。
後はブラウザから example.com/selenium/ のようにしてアクセスする。
Selenese,RSeleneseともにロケータはDOM,XPath,id又はnameで記述できる。
*** Selenese [#j3f9ddbc]
パイプ区切りでseleniumのコマンドを記述していく。
wikiのテーブル記法に似ているが数を合わせる必要はない。
|open|/|
|type|//input[@id='text1']|abc|
|click|//button[@id='button1']|
|waitForPageToLoad|30000|
*** RSelenese [#b35de468]
Rubyで書く。
seleniumのコマンドがそのままメソッド名になっている(命名規則は小文字アルファベットとアンダースコアの組み合わせ)
open "/"
type "//input[@id='text1']" "abc"
click "//button[@id='button1']"
wait_for_page_to_load "30000"
eachの例
(1..10).each { |index| type "//input[@class='text[" + index.to_s + "]'" index }
*** 再利用 [#t4facae1]
ファイル名の先頭にアンダースコアを付けるとテストケースとしては認識されず、再利用可能な状態になる。
|pause|5000|
|waitForPageToLoad|30000|
などを_pause.sel、_wait.selとして保存しておき、必要になったら、
|includePartial|pause| (Selenese)
include_partial "wait" (RSelenese)
として呼び出せる。
** テストスイート [#a65def0e]
test/selenium/ 配下にディレクトリを作ってそのディレクトリ配下にテストケースを記述すると、ディレクトリ名がテストスイート名になる。
example.com/selenium/ の左上のフレームのドロップダウンリストから特定のテストスイートを選んでその中のテストケースだけを実行することが可能。
webrickでは動いていたが、開発環境上のApache+fcgiではテストスイートやテストケースは認識するものの、実際にアクセスするとNot Foundと表示されてしまう。
URLを見てみると、example.com/selenium/tests/1779%2F1779_00.sel のように / が %2Fになっている。
これを / に変更してアクセスすると正常に表示されるので、リンクを作成しているlink_toの呼び出し元である vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml の24行目を修正して、gsub(/%2F/, '/')を加えた所、ディレクトリ単位でのテストスイートが動作するようになった。
** 状況 [#za6196c1]
機能調査中
#blikifooter(斉藤)