AI ベースのテストにおけるオブジェクト識別の改善方法

このトピックでは、UFT Developer の AI 機能を使ってアプリケーションのオブジェクトを一意に識別するためのキー ポイントについて説明します。

オブジェクトに関連付けられたテキスト

オブジェクトに関連付けられたテキストは、オブジェクトを一意に識別するのに役立ちます。たとえば、

desktop.findWithAI( "input" , "USER NAME" ).typeKeys( "admin" )

では、テキスト "USER NAME" を使ってオブジェクトを識別することで、正しい入力フィールドに文字列が入力されるようにしています。

アプリケーションのオブジェクトを検出するときに、フィールドの周りに複数のラベルが存在する場合は、UFT Developer はオブジェクトを識別する上で最も論理的なものを使用します。しかし、オブジェクトを表すラベルとしてユーザーが別のラベルを使用しても、UFT Developer はオブジェクトを識別できます。

注: UFT Developer ではファジーマッチ アルゴリズムを使用しており、文字列の約 20 % を '*' や空白で置き換えても、同じ結果を得ることができます。

例:アプリケーションのオブジェクトを検出するときに、ボタンはボタンのテキストと関連付けられますが、フィールドは、そのコンテンツではなく、ラベルに関連付けられます。

フィールドに複数のラベルがある場合、UFT Developer はそのうちの 1 つを使って検出を行いますが、フィールドを表すのに他のラベルを使ってテスト操作を実行しても、 UFT Developer がこのフィールドを正しく識別できることもあります。

相対値を指定したオブジェクトの識別

UFT Developer では、オブジェクトに対して操作を実行するときに、オブジェクトを一意に識別する必要があります。指定したオブジェクトを表すテキストに対して、複数のオブジェクトが一致してしまう場合は、オブジェクトの位置を指定することで、一意に識別できるようになります。位置として指定できるのは、アプリケーションの類似オブジェクトに相対的な順番、または他の AI オブジェクト(アンカーと呼びます)からの近接方向の 2 種類です。.

findWithAI オブジェクトの識別では、occurrence および Direction 引数を使って、順番によるオブジェクトの位置情報を指定します。

findWithAIAnchor オブジェクトの識別では、Position および anchor 引数を使って、近接方向によるオブジェクトの位置情報を指定します。

オブジェクトの順番を表す位置情報は以下のような情報です。
  • オブジェクトの出現番号(1 番目、2 番目、3 番目など)
  • 出現番号を数え始める方向(左、右、上、下)

たとえば、desktop.findWithAI("button", "ON", 2, Direction.LEFT).click() の場合は、アプリケーションの左から 2 番目の "ON" ボタンをクリックします。

他の AI オブジェクトからの近接方向によってオブジェクトを識別する場合は、以下の位置情報を指定します。
  • 表現するオブジェクトのアンカーに対する近接方向(LEFT_OF、RIGHT_OF、ABOVE、BELOW)
  • アンカー オブジェクト。アンカーは、表現するオブジェクトと同じコンテキストに存在する AI オブジェクトである必要があります。

UFT Developer は、アンカーから指定した方向にあり、最も近く、最も位置の揃ったテキストに一致する AIObject を返します。

たとえば、次のテストは、Latest Edition テキストの下にあり、Linux テキストの右にある download ボタンをクリックします。

AIObject latestEdition = desktop.findWithAI("text_block", "Latest Edition")
AIObject linux = desktop.findWithAIAnchor("text_block" , "Linux" , Position.BELOW, latestEdition)
desktop.findWithAIAnchor("button", "download", Position.RIGHT_OF, linux).click()