アプリケーションのテスト時には、エレメントがページに存在しないことをアサートすることが必要になる場合があります。たとえば、ログアウトした後に、ナビゲーションバーにログインしたユーザーのプロファイルが存在しないことを検証したい場合があります。また、削除アクションを行った後に、削除した項目がページ上に存在しなくなっていることを確認したい場合もあります。
検証したい内容に応じて、mablトレーナーで要素が存在しないことをアサーションする方法がいくつかあります:
非表示の要素
「存在しない」アサーションは、要素が画面上に表示されているかどうかではなく、DOM内に存在するかどうかをチェックします。
対象の要素がHTMLには存在するものの、display、visibility、opacityなどの属性を使用して非表示になっている場合、「存在しない」アサーションは失敗します。ブラウザテストの場合は、CSSアサーションを使用して、要素の表示プロパティを確認することができます。
ステップを順不同で記録する
異なるクレデンシャルを使用して、別のページで、または削除アクションの前に、存在しないはずの要素にアクセスできる場合は、要素が表示されている間にアサーションを記録してから、テスト内で位置を変更してみてください。
この戦略の例については、次のアニメーションを参照してください。
「存在しない」アサーションを作成するための逆方向の作業
たとえば、制限されたユーザーロールに対して「Admin settings」要素が存在しないことを検証するには、次のようにします:
- 記録を一時停止し、「Admin settings」要素を表示できるユーザーとしてログインしてください。
- 記録中に、その要素に対して「存在しない」アサーションステップを作成します。要素が存在している間は、アサーションが実行され、すぐに失敗することに注意してください。
- そのアサーションステップを、制限付きユーザーがログインしているテストの部分に移動してください。
制限されたユーザーとしてテストを実行すると、「Admin settings」要素が存在しないため、アサーションは成功します。
検索の設定を使用する
最良の結果を得るには、検索の設定を「存在しない」アサーションに追加してください:
- 変更される可能性が低いエレメント属性を選択します。
- 自動修復が無効になっていることを確認してください。「存在しない」アサーションが検索の設定に一致する別の要素に自動修復された場合、アサーションは失敗します。
要素の検索を使用する
テスト中に要素を表示できないが、そのCSSまたはXPathがわかっている場合は、要素の検索アサーションを記録できます:
- 要素の検索ステップを追加します:+ (ステップを追加) > 要素を検索。
-
検索タイプを選択してください:
- 「最初の要素」 - ターゲット要素が存在しないことをアサートする場合 - または -
- 「要素の数」 - CSSまたはXPathに一致する要素が存在しないことをアサートします
- CSSまたはXPathを入力し、「Make assertion」を選択します。
- 次のページで、アサーションの詳細を設定します
- 「最初の要素」 - HTML アサーションを設定し、アサーションタイプを「存在しない」に設定します
- 「要素の数」 - 期待値を0に設定します。
エレメント数のカウントでのアサーションは、変更の前後のエレメント数でアサートする場合にも便利です。たとえば、テーブルからレコードを1つ削除する場合に、この変更の前後でエレメント数のカウントに対するカスタム検索アサーションを使用して、テーブルに表示されるレコードが1つ少なくなっていることをアサートすることができます。
制限事項
- 要素の検索アサーションはモバイルテストでは使用できません。
- 対象の要素がShadow DOM内にある場合は、XPathの代わりにCSSクエリーを使用してください。詳細については、Shadow DOMでのテストを参照してください。
要素が存在しなくなるまで待機する
テストケースでページに要素が表示されなくなるまで待機する必要がある場合は、Wait until not presentステップを使用します。このステップは、一致する要素がDOMから消えるまで、設定したタイムアウトを上限としてテストを一時停止します。手順については、waitステップの追加を参照してください。
要素を消すためにテストが何らかの操作を繰り返す必要がある場合、たとえば「Load more」ボタンをクリックする、行を1つずつ閉じるなどの場合は、代わりにその要素を条件とするwhile ループを使用します。