このセクションでは、Web シナリオの待ち条件をカスタマイズする方法について説明します。
このセクションの内容:
待ち条件とは
現在のシナリオ ステップの検証/抽出フェーズに移行し、その後シナリオの次のステップに移行するために、ユーザー アクションを実行した後 SOAtest/Virtualize が待機する時間をカスタマイズできます。
ユーザーが Web ページと対話するとき、Web ページはユーザーの操作に応答します。たとえば、ユーザーがリンクをクリックすると、ページは新しいコンテンツを再読み込みします。ユーザーがメニュー アイテムを選択するとき、ページの他の部分が更新されるかもしれません。ユーザーは、次の操作を行う前に、ページの更新が完了するまで無意識に待ちます。つまり、多くの場合、ユーザーは次に操作するページ要素を表示するために更新を待つ必要があります。
テストの自動化を実装する際、この判断を設定する必要があります。ページの準備ができる前にシナリオ実行プロセスの継続を試みないように、SOAtest/Virtualize は十分に待機しなければなりません。しかし同時に、自動化利点の 1 つ (すなわちスピード) を達成するために、迅速に実行されなければなりません。
SOAtest/Virtualize は記録中に待ち状態を自動的に構成します。各 Web シナリオ ステップに、次のシナリオ ステップで使用される要素を待つために遅延を追加します。これは、リンクがページに表示されないことには、次の Web シナリオ ステップがそのリンクをクリックできないからです。
記録中に SOAtest が、アクションによって新しいページが読み込まれると検出する場合、 SOAtest/Virtualize は "ページの読み込みを待機" を追加します。
ページが AJAX リクエストを実行する場合など、記録中に SOAtest/Virtualize がページの読み込みに起因しないネットワーク トラフィックを検出する場合、 "HTTP トラフィック無発生時の待機" 待ち条件が追加されます。これは、適切なリクエストを作成するために Web アプリケーションに十分な再生時間を与えるためです。
しかしながら、望みどおりにシナリオを実行するために、待ち条件を手動で調整または修正したい場合もあります。多くの場合、複数の待ち条件が 1 つのシナリオ ステップに使用されます。
待ち条件の指定
シナリオの記録中にキャプチャされた待ち条件は、シナリオ ステップの [待ち条件] タブで確認し修正できます。次の待ち条件が利用可能です。
ページの読み込みを待機: この待ち状態は、最低でも 1 ページの読み込みが発生するまで待機します。ただし、互いに 1秒以内に起こるすべてのページ読み込みが完了するまで待機します。新しいページの読み込みを開始することなく 1 秒が経過すると、待機は終了します。ページ読み込みは、ページ全体が再読み込みされていること、または 1 つのフレームが再読み込みされていることを表します。シナリオ ステップが記録する原因となる特定のユーザー アクションの後に、および記録される次のステップのユーザー アクションの前に、SOAtest/Virtualize がページ読み込みが発生することを検出した場合、[ページの読み込みを待機] 待ち条件が記録中に追加されます。
- 要素を待機: この待ち条件は、指定されたページ要素が特定の状態を満たすまで待機します。
- ページ要素: ページ要素の指定は、次の 2 通りの方法があります。
- 次のユーザー アクション対象の要素: このオプションは、シナリオ中の次のステップを見て、ステップの [ユーザー アクション] タブで設定された要素を使用することによって、どの要素を待機するかを自動的に定義します。あるシナリオで現在のステップが最後のステップだった場合、この待ち条件は待機を実行しません。
- 指定の要素: このオプションは、どの要素を待機するか手動で選択できます。要素を指定するために、要素のプロパティ、XPath、またはスクリプトを使用できます。
- 条件: 待機するには、次の要素の条件を設定できます。
- 存在する: この条件は、要素がページ上に表示されるまで待機します。要素はユーザーに見える場合も見えない場合もあります。ユーザーが他の要素をマウスオーバーするまで要素が表示されないケースでは、この条件を下記の [表示] よりも推奨します。これは記録中に自動的に追加される要素の待機にデフォルトで使用される条件です。
- 表示: この条件は、要素がページ上に表示されるまで待機します。
- 非表示: この条件は、要素がページ上からなくなるまで、またはページ上にあるが非表示になるまで、待機します。
- 編集可能: この条件は、入力要素が編集可能になるまで待機します。この条件が入力以外の要素に使用される場合は最終的にタイムアウトします。なぜなら、入力以外の要素は定義上は編集不可能であるからです。
- 値を持つ: この条件は、要素が特定の値の属性を持つまで待機します。属性は、要素または要素のテキストコンテンツの "テキスト" でサポートされている任意の属性である可能性があります。
[要素を待機] 待ち条件 (要素が表示されるのを待つ) は、 [スクリプト ダイアログを待機] 待ち条件を追加されていない、すべてのテストの最後の待ち条件として記録中に追加されます。[要素を待機] 待ち条件は、次の場合には動作しません (つまり、何も待機しません) 。
- 現在のシナリオ ステップの後に続くステップがシナリオにない
- 現在のシナリオ ステップの後に有効な Browser Playback ツールがない
- 次の Browser Playback ツールがユーザー アクションでページ要素を使用しない
次の Browser Playback ツールは、テスト スイート ロジックを使用するように設定されている 。次のステップがテスト スイート ロジックを使用する場合、そのロジックは次のステップが実行されない原因になり得るので、[要素の待機] 待ち条件は使用されない
- ページ要素: ページ要素の指定は、次の 2 通りの方法があります。
スクリプト ダイアログを待機: この待ち条件は、alert、 confirm、または prompt のいずれかのスクリプト ダイアログが検出されるまで待機します。[スクリプト ダイアログを待機] 待ち条件は、スクリプト ダイアログが表示される原因となるすべてのテストの最後の待ち条件として、記録中に追加されます。
- 指定した時間の待機: この待ち条件は、指定のミリ秒数待機します。この待ち条件は記録中に自動的に追加されません。
HTTP トラフィック無発生時の待機: この待ち条件は、ブラウザーとサーバーの間にいかなるトラフィックもない状態で、指定の秒数が経過するまで待機します。たとえば、指定した時間が
1
だったとして、ブラウザーとサーバーの間に 1 秒間トラフィックがなければ待機を終了します。この待ち条件は、他の非同期ではないリクエストの発生原因である非同期リクエストが検出された場合にだけ記録中に追加されます。
[待ち条件] タブから手動で新しい待ち条件を追加することに加え、Browser Contents Viewer ツールから自動で追加することも可能です。
Browser Contents Viewer から待ち条件を追加
Browser Contents Viewer では、レンダリングされた Web ページのビューから、待ち条件をグラフィカルに指定できます。
Browser Contents Viewer ツールから新しい待ち条件を追加するには、次の操作を行います。
- 待ち条件を指定したい要素を右クリックし、[待ち条件の追加] を選択します。
- [待ち条件の追加] ダイアログで、新しい待ち条件の詳細を指定して [OK] をクリックします。
追加された待ち条件は、クリックされる要素が表示されるまで待機するよう自動的に設定されます。
待ち条件に関連する要素を識別
待ち条件のソースである要素は、Browser Contents Viewer で緑色の枠線でハイライトします。
待ち条件の実行順を構成
待ち条件は [待ち条件] タブに実行順に表示されます。[待ち条件] タブで適切なボタンをクリックすることで、条件の追加、削除、そして順番の変更を行うことができます。
待ち条件の順番は大切です。
SOAtest は、他の待ち条件が成功するか失敗するかにかかわらず、すべての待ち条件を表示されている順番で実行します。待ち条件がその条件のタイムアウト前に満たされなかった場合、エラー メッセージが生成されます。
[指定した時間の待機] 以外の各待ち条件にはタイムアウト時間があります。待ち条件がタイムアウト時間内に満たされなかった場合、エラー メッセージがレポートされるので、待ち条件の調整ができます。しかし、シナリオ ステップは待ち条件が失敗しても継続されます。タイムアウト時間は、設定ダイアログに設定されているデフォルトのタイムアウト時間を使用することも、個別の待ち条件でカスタマイズすることも可能です。