カスタム コントロールの管理

Silk4J が専用サポートを提供していないカスタム コントロールに対応するカスタム クラスを作成できます。 カスタム クラスを作成すると、以下の利点があります。
  • スクリプトのロケーターが効率化されます。
  • カスタム コントロールと対話するための再利用可能コードを簡単に記述できます。

例:UltraGrid Infragistics コントロールのテスト

カスタム グリッド コントロールが Silk4J で汎用クラス Control として認識されるとします。 Silk4J のカスタム コントロール サポートを使用すると、以下の利点があります。
カスタム コントロール クラス名をロケーターで使用できるため、オブジェクトの認識率が高まります。
複数のオブジェクトが Control として認識されることがあります。 ローケーターには、特定のオブジェクトを識別するためのインデックスが必要です。 たとえば、オブジェクトはロケーター //Control[13] を使用して識別できます。 このコントロールのカスタム クラス (クラス UltraGrid など) を作成する場合は、ロケーター //UltraGrid を使用できます。 カスタム クラスを作成することによって、テスト対象アプリケーションが変更された場合にオブジェクト識別子が変わりやすい、大きな数字のインデックスを使用する必要がなくなります。
スクリプト内のコントロールに、再利用可能な再生操作を実行できます。

カスタム クラスを使用している場合、ユーザー インターフェイスにカスタム コントロールを指定すると生成されるクラスであるカスタム クラスに以下のコードを追加することで、グリッドのコンテンツをメソッド内に取り込む動作をカプセル化できます。

通常は、以下のいずれかの方法で、メソッドをカスタム コントロール クラスに実装できます。
  • clicktypeKeystextClick、および textCapture などのメソッドを使用できます。
  • AUT のオブジェクトで動的にメソッドを呼び出せます。
  • AUT に追加したメソッドを動的に呼び出せます。 これは、この例で説明されている手法です。
以下のコードを使用して、「テスト対象アプリケーションにコードを追加してカスタム コントロールをテストする」の例で定義されている静的メソッドを呼び出すことができます。 メソッド GetContents が、生成されたクラス UltraGrid に追加されます。
// Java code
import com.borland.silktest.jtf.Desktop;
import com.borland.silktest.jtf.common.JtfObjectHandle;

public class UltraGrid extends com.borland.silktest.jtf.Control {

  protected UltraGrid(JtfObjectHandle handle, Desktop desktop) {
    super(handle, desktop);
  }

  public List<List<String>> getContents() {
    return (List<List<String>>) invoke("AUTExtensions.UltraGridUtil.GetContents", this);
  }
}
クラスをカスタム コントロールとして定義すると、Dialog クラスのように、すべての組み込みクラスの場合と同じ方法でそのクラスを使用できます。
// Java code
UltraGrid ultraGrid = mainWindow.find("//UltraGrid[@automationId='my grid']");
List<List<String>> contents = ultraGrid.getContents();