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以上で利用可能です。
Auto Amazon Links: プロダクトが見つかりません。
2013-04-04