Selenium IDE で処理を分岐させたい時は以下のライブラリ/アドオンを使うといい。
・Flow Control
・goto_sel_ide.js
(http://code.google.com/p/o2platform/source/browse/trunk/O2_Scripts/APIs/Selenium/IDE_Extensions/goto_sel_ide.js?r=912)
ただ、どちらも FireFox を起動して Selenium IDE を使わないといけない。
今回はコマンドラインで Selenium を起動させるので、
Selenium IDE のようにライブラリやアドオンは使えない。
ということで、JavaScriptで無理やり分岐させる。
元々SeleniumはJavaScriptで動きを操作できるから、
無理やりではないけど・・・・。
今回はログイン後のURLによって処理を分岐させる。
以下はログインするテストケース。
<tr> <td>type</td> <td>id=loginID</td> <td>test_id</td> </tr> <tr> <td>type</td> <td>id=password</td> <td>test_password</td> </tr> <tr> <td>clickAndWait</td> <td>id=loginbtn</td> <td></td> </tr>
上記テストケースでログインした先のURL によって処理を分けるには
以下のテストケースを続けて実行する。
<tr> <td>getEval</td> <td>win = this.page().getCurrentWindow();</td> <td></td> </tr> <tr> <td>getEval</td> <td>url = win.location.href;</td> <td></td> </tr> <tr> <td>storeEval</td> <td>javascript{ if(url == 'http://test.co.jp/first_login.php'){ win.location.href = 'http://test.co.jp/main'; } }</td> <td>dumy</td> </tr>
「getEval」でURLを取得し、「storeEval」でURLを判定し、
first_login.php であれば、 main に飛ばしている。
このようにテストケースを分岐させることができる。
--- 2013/07/12 追記 ---
これでは動かない場合がある。
原因はJavaScriptのシンタックスエラー。
ただ、原因が分からない。「javascript{}」が悪いらしいが・・・。
ということで以下のように「storeEval」を使わないで「getEval」を使い、
変なシンタックスエラーが嫌なので、改行しない。
さらに win.location.href で飛ばすと、
飛ばし先が表示されないまま次のテストが開始されるから、
飛ばし先のページが表示されるまで pauseコマンドで sleep させる。
今回は5秒スリープさせる。
<tr> <td>getEval</td> <td>if(url == 'http://test.co.jp/first_login.php'){win.location.href = 'http://test.co.jp/main';}</td> <td>dumy</td> </tr> <tr> <td>pause</td> <td>5000</td> <td></td> </tr>
これで上手くいきました。
--- 追記おわり ---
デバックは「storeEval」で alert() を使えばアラートが表示される。
<tr> <td>storeEval</td> <td>javascript{ alert(url); }</td> <td>dumy</td> </tr>
以上です。