オブジェクト マップ

オブジェクト マップはテスト資産の一種であり、コントロールまたはウィンドウのロケーターではなく、コントロールまたはウィンドウに論理名 (エイリアス) を関連付ける項目が含まれています。コントロールがオブジェクト マップ資産に登録されると、スクリプトでのそのコントロールに対する参照はすべて、実際のロケーター名ではなく、そのエイリアスによって行われます。

複数のスクリプトで頻繁に使用するオブジェクトを格納するために、オブジェクト マップを使用できます。複数のテストで 1 つのオブジェクト マップ項目の定義を参照できるため、ユーザーがそのオブジェクト マップ定義を 1 回更新すると、オブジェクト マップ定義を参照するすべてのテストでそのオブジェクト マップ定義が Silk4J によって更新されます。

スクリプトで、オブジェクト マップ識別子とロケーターを混在させることができます。この機能により、オブジェクト マップを比較的小さいまま保ち、管理しやすくすることが可能です。共通で使用するオブジェクトをオブジェクト マップに格納し、まれにしかしようしないオブジェクトを参照するにはロケーターを使用します。

ヒント: オブジェクト マップが提供する機能を最適に使用するには、テストしたいアプリケーションごとに個々のプロジェクトを Silk4J に作成します。

オブジェクト マップの例

以下の構成では、ロケーターが使用されている BrowserWindow の定義が示されています。

_desktop.BrowserApplication("cnn_com").BrowserWindow("//BrowserWindow[1]")

オブジェクト マップ資産の名前は cnn_com です。オブジェクト マップのエイリアスによって置き換えることができるロケーターは、以下のとおりです。

"//BrowserWindow[1]"

BrowserWindow のオブジェクト マップ エントリは BrowserWindow です。

結果的に、スクリプト内の BrowserWindow の定義は以下のようになります。

_desktop.BrowserApplication("cnn_com").BrowserWindow("BrowserWindow")

ロケーターのインデックスが変更された場合、テスト スクリプトのロケーターのすべての外観を変更する必要はなく、オブジェクト マップのエイリアスを変更するだけで済みます。Silk4J によって、オブジェクト マップ定義を参照するすべてのテストが更新されます。

オブジェクト マップ識別子とロケーターを混在させる例

つぎのサンプル コードは、オブジェクト マップ識別子と、オブジェクト マップに格納されたオブジェクトのまれに使用される子オブジェクトを指定するロケーターを混在させる方法を示します:
Window window = _desktop.find("MyApplication"); // object map id - the application window is used often
MenuItem aboutMenuItem = _desktop.find("//MenuItem[@caption='About']"); // locator - the About dialog is only used once
aboutMenuItem.select();