UI オートメーション コントロールのサポートするメソッドが、すべてのサポートするテクノロジの対応するコントロールに対して有効であることを保障するため、Silk4J API がサポートするのは、これらのコントロールに対して利用できるメソッドやプロパティのサブセットになります。コントロールに対して Silk4J API で利用でいないその他のメソッドやプロパティの呼び出しには、動的呼び出しを使用してください。
動的呼び出しを使用すると、テスト対象アプリケーション内のコントロールの実際のインスタンスに関して、メソッドの呼び出し、プロパティーの取得、またはプロパティーの設定を直接実行できます。また、このコントロールの Silk4J API で使用できないメソッドおよびプロパティーも呼び出すことができます。動的呼び出しは、作業しているカスタム コントロールを操作するために必要な機能が、Silk4J API を通して公開されていない場合に特に便利です。
オブジェクトの動的メソッドは invoke メソッドを使用して呼び出します。コントロールでサポートされている動的メソッドのリストを取得するには、getDynamicMethodList メソッドを使用します。
オブジェクトの複数の動的メソッドは invokeMethods メソッドを使用して呼び出します。コントロールでサポートされている動的メソッドのリストを取得するには、getDynamicMethodList メソッドを使用します。
動的プロパティの取得には getProperty メソッドを、動的プロパティの設定には setProperty メソッドを使用します。コントロールでサポートされている動的プロパティのリストを取得するには、getPropertyList メソッドを使用します。
control.invoke("SetTitle","my new title");
Silk4J 型には、プリミティブ型 (boolean、int、string など)、リスト、およびその他の型 (Point、Rect など) が含まれます。
列挙パラメータは文字列として渡す必要があります。文字列は、列挙値の名前と一致しなければなりません。たとえば、メソッドが .NET 列挙型 System.Windows.Visiblity のパラメータを必要とする場合には、Visible、Hidden、Collapsed の文字列値を使用できます。
.NET 構造体とオブジェクト パラメータはリストとして渡します。リスト内の要素は、テスト アプリケーションの .NET オブジェクトで定義されているコンストラクタの 1 つと一致しなければなりません。たとえば、メソッドが .NET 型 System.Windows.Vector のパラメータを必要とする場合、2 つの整数値を持つリストを渡すことができます。これが機能するのは、System.Windows.Vector 型が 2 つの整数値を引数に取るコンストラクタを持つためです。
コントロール パラメータは TestObject として渡すことができます。
この文字列表現を取得するには、テスト対象アプリケーションの返された .NET オブジェクトに対して ToString メソッドを呼び出します。
この例では、動的呼び出しを使って UIADocument コントロールのスクロール メソッドを呼び出す方法を紹介します。Silk4J の API ではこのようなスクロール メソッドを提供していません。 これは、これらのメソッドが、UI オートメーション プロバイダー インターフェイスを実装するすべてのテクノロジの UIADocument コントロールで利用可能ではないためです。
UIADocument textBox = mainWindow.<UIADocument>find("//UIADocument"); List<String>propertyList = textBox.getPropertyList(); List<String> methodList = textBox.getDynamicMethodList();
この例では、GetPropertyList メソッドが返す propertyList には、ScrollPattern.VerticalScrollPercent プロパティが含まれます。GetDynamicMethodList メソッドが返す methodList には、ScrollPattern.ScrollVertical メソッドが含まれます。
textBox.invoke("ScrollPattern.ScrollVertical", ScrollAmount.SMALL_INCREMENT);
textBox.getProperty("ScrollPattern.VerticalScrollPercent");