アプリケーションのテスト時には、エレメントがページに存在しないことをアサートすることが必要になる場合があります。たとえば、ログアウトした後に、ナビゲーションバーにログインしたユーザーのプロファイルが存在しないことを検証したい場合があります。また、削除アクションを行った後に、削除した項目がページ上に存在しなくなっていることを確認したい場合もあります。
検証を行う内容に応じ、次の複数の方法を使って、mablトレーナーでエレメントが存在しないことをアサートできます。
エレメントが存在しないことをアサートすることは、エレメントが非表示であることをアサートすることと同じではありません。
- ページのHTML内にターゲットエレメントが存在しない場合、"is not present" アサーションは成功します。
- ターゲットエレメントがHTML内に存在していて、
display
、visibility
、opacity
などの属性を使ってターゲットエレメントが非表示になっている場合、"is not present" アサーションは失敗します。ブラウザーテストの場合は、代わりにCSSアサーションを使用できます。
エレメントアサーションで逆方向に作業する
そのエレメントがページにまだ存在する間に、"is not present" エレメントアサーションを作成します。作成したアサーションは、実行されて失敗します。その後、テスト内のこのアサーションが存在しないと予想される位置に、このアサーションを移動します。
この戦略の例については、次のアニメーションを参照してください。
逆方向に作業して "is not present" アサーションを作成
"is not present" アサーションに [Configure Find] を追加します。
- 変更される可能性が低いエレメント属性を選択します。
- 自動修復が無効になっていることを確認します。"is not present" アサーションが [Configure Find] の設定と一致する別のエレメントに自動修復される場合、このアサーションは失敗します。
カスタム検索アサーションを使用する
テスト中にはそのエレメントが表示されないものの、CSSまたはXPathで識別できる場合、カスタム検索アサーションを記録し、"is not present" アサーションタイプを選択します。
エレメント数のカウントでアサートする
エレメントが存在しないことをアサートする以外に、カスタム検索アサーションを使用してCSSまたはXPathクエリに一致するエレメントの数が0であることでアサートすることもできます。
エレメント数のカウントでのアサーション
エレメント数のカウントでのアサーションは、変更の前後のエレメント数でアサートする場合にも便利です。たとえば、テーブルからレコードを1つ削除する場合に、この変更の前後でエレメント数のカウントに対するカスタム検索アサーションを使用して、テーブルに表示されるレコードが1つ少なくなっていることをアサートすることができます。
whileループを使用してエレメントが表示されなくなるまで待機する
テストケースでページにエレメントが表示されなくなるまで待機する必要がある場合は、エレメントが存在しなくなったら終了するループを作成できます。このワークフローを実装するには、次の手順を実行します。
- 変数を作成し、その変数に数字を値として割り当てます。
- 作成した変数を使ってループするフローを作成します。
- フロー内に、エレメントが存在しないことをアサートするIFステップを追加します。
- IFステップで、ループ変数と同じ名前で新しい変数を作成する変数ステップを追加し、その値を0に設定します。
- ELSEステップを追加します。
- ELSEステップで、静的な待機ステップを追加します。
次の例では、変数loop_total
の初期値は50に設定されます。繰り返しループで、トーストタブが存在する場合、このテストはELSEシナリオを実行し、10秒間待機します。トーストタブが存在しない場合、このテストはIFシナリオを実行し、loop_total
の値を0に更新してループを終了します。
エレメントが表示されなくなるまで待機する