Seleniumでif文が使える「flow control」アドオンが超便利!
Selenium IDE等でテストケースを作る際に、以下のようなシチュエーションに遭遇したことはないでしょうか?
- 商品購入ボタンを押すと、ログイン中の場合はそのまま配送選択ページに遷移する。
- ログアウト時はログイン画面に遷移するので、アカウント情報を入力。
これってモロに条件分岐なんですよ。
しかしSeleniumのみでこれを行うのは意外と至難の業なのです。
そこで登場するのが今回ご紹介するSeleniumの機能拡張アドオン「flowControl」。
flowControl導入で使えるようになるコマンド一覧
アドオンをインストールすると、次のようなコマンドが使えるようになります。
コマンド | 対象 | 値 | 解説 |
---|---|---|---|
gotolabel | ラベル名 | ラベル名にジャンプする | |
label | ラベル名 | ラベル付けする | |
gotoIf | 条件文 | ラベル名 | 条件文を満たすとラベル名にジャンプする |
while | 条件文 | 条件を満たす間、endWhileまでを実行する | |
endWhile | whileスコープの終端 |
flowControlを活用した条件分岐テストケース
では、flowControlで拡張されたコマンドを使って最初のケースを実行してみましょう。
配送選択ページのURLは「…/deliver.php」と仮定しています。
step | コマンド | 対象 | 値 |
---|---|---|---|
1 | clickAndWait | id=buy | |
2 | getEval | win = this.page().getCurrentWindow(); | |
3 | gotoIf | win.location.href.match(/deliver.php/) | logged_in |
4 | type | name=login_email | testuser@example.com |
5 | type | name=login_password | ****** |
6 | clickAndWait | id=login | |
7 | label | logged_in | |
8 | clickAndWait | id=next |
- 購入ボタンをクリック
- テスト中のウィンドウを取得
- 遷移先が配送先選択ページだったら「logged_in」ラベルまでジャンプ
- メールアドレスを入力
- パスワードを入力
- ログインボタンをクリック
- logged_inラベル
- 次へボタンをクリック
これでテストケースの柔軟性が飛躍的に高まること間違いなしです。
「flowControl」アドオンはSelenium 0.6以上で利用可能です。
2013-04-04