テキスト解決のサポート

テキスト解決メソッドを使用して、オブジェクト解決で識別できない、高度にカスタマイズされたコントロールを含むテスト アプリケーションを便利に操作できます。座標ベースのクリックの代わりにテキスト クリックを使用し、コントロール内に指定されたテキスト文字列をクリックできます。

たとえば、次の表の 2 行目の最初のセルを選択することをシミュレートできます。

セルのテキストを指定すると、次のコードが生成されます:
'VB code
table.TextClick("Brian Miller")
// C# code
table.TextClick("Brian Miller");
テキスト解決メソッドは、次のテクノロジ ドメインでサポートされます。
  • Win32
  • WPF
  • Windows Forms
  • Java SWT と Eclipse
  • Java AWT/Swing
    注: Java アプレット、および Java バージョンが 1.6.10 より前の Swing アプリケーションの場合、テキスト解決は追加設定なしでサポートされます。Direct3D をサポートしない Java バージョン 1.6.10 以降の Swing アプリケーションの場合は、アプリケーションの起動時に次のコマンドライン要素を追加する必要があります。
    -Dsun.java2d.d3d=false
    例:
    javaw.exe -Dsun.java2d.d3d=false -jar mySwingApplication.jar
    Direct3D をサポートする Java アプレットや Swing アプリケーションでは、テキスト解決はサポートされません。
  • Internet Explorer
注: テキスト解決は、画面に表示されていないコントロールに対しては機能しません。たとえば、スクロールして画面外にあるテキストに対しては、テキスト解決を使用できません。
注: 対象のテキストで使用されたフォントがテストが実行されるマシン上にインストールされていない場合、テキスト解決が機能しない場合があります。

テキスト解決メソッド

次のメソッドにより、コントロールのテキストを操作できます。
TextCapture
コントロール内のテキストを返します。子コントロールのテキストも返します。
TextClick
コントロール内の指定テキストをクリックします。テキストが検出されるか、同期オプションで定義できるオブジェクト解決タイムアウトに達するまで待機します。
TextRectangle
コントロール内の特定テキストの矩形、またはコントロールの領域を返します。
TextExists
コントロール内またはコントロールの領域内に特定テキストが存在するかどうかを判断します。

テキスト クリックの記録

テキスト クリックの記録はデフォルトで有効です。テキスト クリックの記録を無効にするには、Silk4NET > オプションの編集 > 記録 をクリックし、OPT_RECORD_TEXT_CLICK チェック ボックスをオフにします。

テキスト クリックの記録を有効にすると、Silk4NET は、相対座標でクリックを記録するのではなく、TextClick メソッドを記録します。通常の座標ベースのクリックよりも TextClick 記録の方が結果が良いコントロールには、この方法を使用します。テキスト クリックが記録されない場合でも、任意のコントロールに対してテキスト クリックをスクリプトに挿入できます。

TextClick 操作を記録しない場合は、テキスト クリックの記録をオフに切り替えて通常のクリックを記録できます。

テキスト解決メソッドでは、部分的に一致する単語よりも完全に一致する単語が優先されます。Silk4NET では、完全に一致する単語の前に部分的に一致する単語が画面に表示されていても、部分的に一致する単語よりも完全に一致した単語の出現が先に解決されます。完全に一致する単語がない場合は、部分的に一致する単語が画面に表示される順序で使用されます。

ユーザー インターフェイスには、テキスト「the hostname is the name of the host」が表示されているとします。次のコードでは、画面上では host の前に hostname が表示されていますが、hostname ではなく host がクリックされます。
'VB code
control.TextClick("host")
// C# code
control.TextClick("host");
次のコードでは、2 番目の出現箇所であることを指定することで、単語 hostname 中の部分文字列 host がクリックされます。
'VB code
control.TextClick("host", 2)
// C# code
control.TextClick("host", 2);