テキスト解決のサポート

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

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

セルのテキストを指定すると、次のコードが生成されます:
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
  • WebDriver ベースのブラウザー
注: テキスト解決は、画面に表示されていないコントロールに対しては機能しません。たとえば、スクロールして画面外にあるテキストに対しては、テキスト解決を使用できません。
注: 対象のテキストで使用されたフォントがテストが実行されるマシン上にインストールされていない場合、テキスト解決が機能しない場合があります。

WebDriver ベースのブラウザー

テキスト解決メソッドは、BrowserWindow オブジェクトと DomElement オブジェクトに対して実行できます。

注: <canvas> 要素に描画されたテキストに対しては、テキスト解決は機能しません。
注: ::before::after などの CSS 擬似要素によって追加されたコンテンツに対しては、テキスト解決は機能しません。

テキスト解決メソッド

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

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

TextClickTextRectangleTextExists メソッドは、その内部で TextCapture を使用してアプリケーションから表示されたテキストを取得し、テキストを処理します。TextCapture メソッドは、2 種類の方法で実装されています。Silk4J は、テスト対象アプリケーションの種類に応じて実装を使い分けます。
  • ネイティブ Windows アプリケーション(WPF、WinForms、Java アプリケーション)、および Internet Explorer の場合は、Silk4J は Windows API のテキスト描画関数をフックして、アプリケーションが画面に描画するテキストを取得します。
  • Google ChromeMozilla FirefoxMicrosoft EdgeApple Safari の場合は、Silk4J は JavaScript ベースの方法を使って、ブラウザーが描画したテキストを取得します。
注: これら 2 種類の実装方法の違いにより、同じ Web アプリケーションでも、使用するブラウザーに応じて異なるテキストを Silk4J が返す場合があります。

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