操作の記録中でのオブジェクト マップのマージ

Silk4J を使用して操作を記録するときに、Silk4J は、既存のオブジェクト マップ エントリが再利用できるかどうか確認します。Silk4J は、新しいロケーターが生成されるときに、記録中に直接確認します。Silk4J は、テスト対象アプリケーションで現在記録されているオブジェクトが既存のオブジェクト マップ エントリと完全に一致するかどうか確認し、一致する場合に Silk4J はオブジェクト マップからそのオブジェクト マップ識別子を再利用します。

この動作には以下のような利点があります。
  • オブジェクト マップのロケーターが変更された場合でも、Silk4J は記録中にオブジェクト マップ識別子を正しく再利用します。
  • 記録したスクリプトに間違ったオブジェクト マップ識別子を含むはずがないため、間違ったオブジェクト マップ識別子によって再生に失敗することは決してありません。
  • 階層のレベルをさらに追加した場合など、オブジェクト マップを再構成した場合でも、オブジェクト マップ識別子を再利用することができます。

Micro Focus Web サイト (http://www.borland.com) の Products リンクをクリックしたとき、Silk4J は、次のスクリプトを記録します。

With _desktop.BrowserApplication( "borland_com" )
  With .BrowserWindow( "BrowserWindow" )
    .DomLink( "Products" ).Click( MouseButton .Left, New Point (47, 18))
  End With
End With
記録したオブジェクト マップは次のようになります。
borland_com                           //BrowserApplication
  BrowserWindow                                //BrowserWindow
    Products                                     //A[@textContents='Products']
ここで、Micro Focus Web サイトのヘッダー部分を含むようにオブジェクト マップを手動で再構成した場合を考えます。
borland_com                           //BrowserApplication
  BrowserWindow                                //BrowserWindow
    header                                       //HEADER[@role='banner']
      Products                                     //A[@textContents='Products']
Products リンクのクリックを記録すると、オブジェクト マップが正しく再利用され、次のスクリプトが記録されます。
With _desktop.BrowserApplication( "borland_com" )
  With .BrowserWindow( "BrowserWindow" )
    .DomElement("header").DomLink( "Products" ).Click( MouseButton .Left, New Point (47, 18))
  End With
End With
注: About リンクなどの Micro Focus Web サイトのヘッダー部分にあるほかのオブジェクトを記録すると、Silk4Jheader ではなく、BrowserWindow の子として About オブジェクト マップ エントリを追加します。