ステップをループさせる
mablでステップのループを使用すると、アプリケーション内のより複雑なユーザージャーニーをコーディングなしでテストすることができます。
ループの概要
最高のテストとは、アプリケーションの変化に適応するものです。アプリに新機能を追加しても、テストが壊れないテストや、ドロップダウンの選択肢が新しく追加されても、一部のテストが失敗しないことが望ましいはずです。アプリケーションの実際のデータ(ドロップダウンの選択肢の数や、ページ上の特定の要素の数など)に基づいて、繰り返される一連のループを設定することで、アプリケーションのより多くの部分をカバーする複雑なテストを、より簡単に作成することができ、より堅牢で、作成と維持が迅速になります。
mablでステップのループを使用すると、アプリケーション内のより複雑なユーザージャーニーをコーディングなしでテストすることができます。
ユースケース
ループは次のような場合に特に有効です。
- Date-picker要素での6ヶ月先の日付にスキップしたい
- ドロップダウンのすべての要素の表示を保証したい
- テストやデプロイメントの初期段階で作成されたテストデータのクリーンアップをしたい
- 正しい項目が表示されるまで結果のリストをページングしたい
- 複数のページにわたって一定の要素が表示されることを保証したい
既存のフローにTrainerのループを追加する
再利用可能な既存のフローには、編集するだけで簡単にループを追加することができます。ただし、ループはそのフローのインスタンスのみをループさせるので、他の場所で再利用する場合はループの設定をやり直す必要があることに注意してください。また、ループを削除する場合も同様です。

FLOWの設定からループ設定可能です。
フローをループさせる回数も設定可能です。ループ量を可変にする方法については後述します。
新しいループの追加
トレーナーにループを追加するには、以下の手順で行います。
- まず、Trainer画面下部のツールバーのプラスボタンをクリックします。
- Loopステップを選択します。FLOWを使ったループ設定を行う場合は、FLOWを新規作成して設定するか、既存のFLOWを選んでループ設定してください。
既存のステップをループさせたい場合
ステップ番号にカーソルを合わせてクリックすると、複数のステップを一度に選択することができます。5、6、7、8のように連続したステップのグループを選択し、ツールバーに表示される「新規フロー」ボタンをクリックしてFLOWを作成し、ループの設定を行います。
- フローに名前を付けた後、「Looping」タブに切り替えるか、「Runs 1 time」をクリックして、ループの設定を開始します。

- ループを設定する際に、ループの反復回数を特定の数値で指定することができます。「Loop using a variable」を選び、変数を使用してループも可能です。

- ループの設定が完了したら、「OK」をクリックするだけで、新しいループの流れが保存されます。
- 繰り返し行う必要のあるステップを追加・削除したい場合は、FLOWの開始と終了の間で、追加・削除してください。
ループ回数の限界値
ループの最大許容数は500回です。
変数を使ったループの指定
ループの数を動的にしか決められない場合があります。例えば、以下のような場合です。
- すべてのチェックボックスにチェックを入れるが、チェックボックスの数は実行ごとに異なる場合がある
- 期待通りのデータが表示されるまで「更新」をクリックしたい
このような場合は、ループ回数を格納する変数を作成し、「変数を使用してループ」を選択することで対応できます。

ループ回数を変数で指定した場合、mabl runnerは各繰り返しの前に、実行されたループ回数が変数の値を超えたかどうかをチェックします。
ループの内側から条件付きで変数を変更することで、ループを延長したり、ループから抜け出したりすることができます。以下の例では、ループ回数の変数を50に初期化しています。しかし、チェックしたチェックボックスの数が5になった時点で、変数を0に変更し、ループを早期に終了させています。これはwhile ループに近い動作となります。

ループをBreakする方法
ループの中に条件分岐を入れて、ループをBreakすることが可能です。
また、ループ回数を変数で設定し、その変数を上限値を超える数値(50回なら51回など)にすることで、Breakに似たような動きになります。
変数「run.loop_index」の使い方
特別な読み取り専用変数 run.loop_index
は、ループ処理の際に自動的に注入されます。この変数の値は、現在のループ番号であり、1ベースの序列インデックスです。これは、CSS クエリや XPath で、あるタイプの要素の n 番目のインスタンスをターゲットにする場合に便利です。以下の例では、CSSクエリの div[role='radiogroup'] label:nth-of-type({{@run.loop_index}}) input
を使用して、各ラジオボタンを順番に選択しています。
Xpathだと //*div[{{@run.loop_index}}]
のように配列の添えに利用できます。

JavaScriptのステップでrun.loop_indexにアクセスする
Javascriptのステップでrun.loop_indexの値にアクセスしたい場合は、
mablInputs.variables.web.runtime.flow_run_ordinal_index
からアクセスできます。
リプレイコントロール
mabl Trainer内のループを再生する場合、ループが途中で停止していても、mablは現在のインデックスでループの再生を再開しようとします。また、ループドロップダウンを使って、再生するループを選択することもできます。

Updated over 1 year ago