xBrowser のページ同期

同期は、すべてのメソッド呼び出しの前後に自動的に実行されます。メソッド呼び出しは、同期条件が満たされるまで開始せず、終了もしません。

注: プロパティのアクセスは同期されません。

同期モード

Silk Test Workbench には、HTML および AJAX 用の同期モードがあります。

HTML モードを使用すると、すべての HTML ドキュメントが対話的な状態になることが保証されます。このモードでは、単純な Web ページをテストすることができます。Java Script が含まれるより複雑なシナリオが使用される場合は、以下の同期関数を使用して、手動でスクリプトを記述することが必要になることがあります。
  • WaitForObject
  • WaitForProperty
  • WaitForPropertyNotEquals
  • WaitForDisappearance
  • WaitForChildDisappearance
  • WaitForScreenshotStable

AJAX モードでは、ブラウザがアイドル状態に類似した状態になるまで待機します。このことは、AJAX アプリケーションまたは AJAX コンポーネントを含むページに対して特に効果的です。AJAX モードを使用すると、同期関数を手動で記述する必要がなくなるため、スクリプト(オブジェクトの表示または非表示を待機したり、特定のプロパティ値を待機するなど)の作成処理が大幅に簡略化されます。また、この自動同期は、スクリプトを手動で適用しないで記録と再生を正常に行うための基礎となります。

トラブルシューティング

AJAX の非同期の特性のため、ブラウザが完全にアイドル状態になることはありません。このため、Silk Test Workbench でメソッド呼び出しの終了が認識されず、特定のタイムアウト時間が経過したあとで、タイムアウト エラーが発生することがまれにあります。この場合は、少なくとも、問題が発生する呼び出しに対して、同期モードを HTML に設定する必要があります。

注: 使用するページ同期メソッドにかかわらず、Flash オブジェクトがサーバーからデータを取得し、計算を実行してデータをレンダリングするテストでは、手動でテストに同期メソッドを追加する必要があります。メソッドを追加しないと、Silk Test Workbench は、Flash オブジェクトが計算を完了するまで待機しません。たとえば、ビジュアル テストでは Delay を使用し、スクリプトでは System.Threading.Thread.Sleep(millisecs) を使用します

AJAX フレームワークやブラウザによっては、サーバーから非同期にデータを取得するために、特殊な HTTP 要求を継続して出し続けるものがあります。これらの要求により、指定した同期タイムアウトの期限が切れるまで同期がハングすることがあります。この状態を回避するには、HTML 同期モードを使用するか、問題が発生する要求の URL を 同期除外リスト 設定で指定します。

URL を除外フィルタに追加するには、オプション ダイアログ ボックスの 同期除外リスト で URL を指定します。

監視ツールを使用して、同期の問題により再生エラーが発生するかどうかを判断します。たとえば、FindBugs(http://findbugs.sourceforge.net/)を使用して、AJAX 呼び出しが再生に影響を及ぼしているかどうかを判断できます。次に、問題が発生するサービスを 同期除外リスト に追加します。

注: URL を除外すると、指定した URL を対象とする各呼び出しに対して同期が無効になります。その URL に対して必要な同期は、手動で呼び出す必要があります。たとえば、WaitForObjectスクリプトまたはビジュアル テストに手動で追加する必要がある場合があります。手動で数多くの呼び出しを追加することを避けるために、可能なかぎり、最上位の URL ではなく、具体的に対象を絞って URL を除外します。

ページ同期設定の構成

オプション ダイアログ ボックスでは、各ビジュアル テストまたはスクリプトのページ同期設定を個別に構成したり、すべてのテストおよびスクリプトに適用するグローバル オプションを設定したりできます。これらのオプションを構成するには、ツール > オプション を選択し、再生 を展開し、xBrowser をクリックします。

ビジュアル テストの個別の設定を構成するには、ビジュアル テストを記録し、次に、グローバル再生値を上書きする 再生設定の設定 ステップを挿入します。設定には、同期除外リスト同期モード同期タイムアウト があります。

たとえば、ビジュアル テストでは、同期モード 再生設定を HTML に設定し、残りのステップでは必要に応じて 同期モードAJAX に戻します。

スクリプトの個別の設定を構成するには、以下のいずれかを呼び出します。
  • Agent.SetOption(Options.XBrowserSynchronizationMode, mode)

    mode には、HTML を使用する場合は 1、AJAX を使用する場合は 2 を入力します。

  • Agent.SetOption(Options.XBrowserSynchronizationExcludes, URL)

    除外するサービスまたは Web ページの URL または URL の一部を指定します。たとえば、http://example.com/syncsample/timeService と入力します。

  • Agent.SetOption(Options.XBrowserSynchronizationTimeout, time)

    time をミリ秒で指定します。