ここでは、いくつかの待機コマンドとその使い分けについて説明します。
画面全体の描画が終わるまで待つ
画面全体の描画が終わるまで待つコマンドは、画面に一定時間変化がないことを基準として、描画の完了を検知します。
そのため、以下のように画面が継続的に変化するWebページでは、描画完了を正しく検知できない可能性があるため、本コマンドは非推奨です。
- 動画が埋め込まれているページ
- 数秒おきにバナー画像が切り替わるページ など
また、ページの読み込み途中に一時的に画面変化が止まった場合、描画が完了したと誤認識し、次のステップへ進んでしまうケースもあります。
このような状況では、「UI要素が表示されるまで待つ」または「UI要素が存在するまで待つ」コマンドを、描画完了後に表示されるUI要素に対して使用することで、より安定した動作が期待できます。
「UI要素が存在するまで待つ」と「UI要素が表示されるまで待つ」の違い
UI要素が存在するまで待つコマンドは、対象のUI要素がUIツリー上に存在していることを検出できるまで待機します。このとき、対象の要素が表示されているかどうかは検出判定に影響しません。
一方、UI要素が表示されるまで待つコマンドは、対象のUI要素が表示されているかどうかを検出できるまで待機します。このため、対象のUI要素がUIツリー上に存在していても、以下のような非表示状態である場合は検出されません。
- display: none;
- visibility: hidden;
- opacity: 0;
このため、基本的には「UI要素が表示されるまで待つ」コマンドの方が、UI要素が表示状態になるまで正確に待機してくれることから、より安定しており、推奨されます。
ただし、モバイルアプリのiOSテストにおいては「UI要素が表示されるまで待つ」が不安定となるため、「UI要素が存在するまで待つ」を使用してください。
コマンド |
内容 |
安定性 | iOSでの利用可否 |
UI要素が存在するまで待つ | UI要素がUIツリー上に現れるまで待機 | ◯ | ◯ |
UI要素が表示されるまで待つ | UI要素が画面上に表示されるまで待機 | ◎ |
△ |