メインコンテンツまでスキップ

Eggplant Functionalでテキストを操作する

テキストを見つける必要があるときは、テキストのイメージをキャプチャしてスクリプトに画像検索をさせることができます。これは、ボタンテキストのようにテキストが静的で変化しない場合に最も効果的です。しかし、テキストが動的であるか、検索するテキストの値が事前にわかっていないシナリオでは、Eggplant Functionalは光学文字認識(OCR)エンジンを提供し、テスト対象システム(SUT)の画面上のテキスト文字列を検索します。

SUT上のテキストを見つける方法はいくつかあります:

テキストを見つけるために画像とOCRをいつ使用するべきか

SUT上のテキストを検索する必要がある場合はほとんどどんなときでもOCRを使用することができますが、キャプチャした画像に対する二次オプションとして扱うべきです。キャプチャした画像の使用が可能か、それともOCRを使用する必要があるかを判断するために、状況を評価する時間をとることが重要です。

以下の説明に当てはまる状況では、OCRに頼る前にキャプチャした画像の使用を試みてみてください:

  • テキストは動的ではありません。
  • あなたが探しているテキストを事前に知っている(スクリプトの実行中に外部ソースから取り込まれるわけではない)。
  • SUTからReadTextを使用してテキストを読み取る必要がない、またはテキストはRemoteClipboard functionを使用してコピーし、その方法でスクリプトに戻すことができる。
  • テストは単一のプラットフォームやシステムに対して行われる(クロスプラットフォームやクロスブラウザではない)。
  • 扱っているテキストは非常に小さいフォントサイズに設定されている、または異常に大きいサイズに設定されている。

OCRは以下の状況に適しています:

  • あなたが探しているテキストを事前に知らないが、検索が行われるまでにスクリプトがその情報にアクセスできる。
  • テキストのフォント、サイズ、または色が変わる可能性がある。
  • テストにはさまざまなブラウザが含まれ、異なるブラウザがフォントを異なる方法でレンダリングする可能性がある。
  • SUTからテキストの値を読み取り、その情報をさらなるテストのために、または外部のデータファイルに記録するためにスクリプトに戻す必要がある。

画像検索

多くの場合、SUT上のテキストは他のSUT上のアイテムを見つけるのと同じように、テキストのイメージをキャプチャし、そのイメージをスクリプトで検索することで見つけることができます。キャプチャされたイメージは使いやすく、非常に信頼性があります。

テキストを含む画像の場合、検索タイプの設定Smoothed for Textは、画像に現れる可能性があるアンチエイリアステキストを考慮に入れています。この設定を使用すると、テキストを含む画像のイメージマッチがより成功します。これは画像キャプチャ時またはスクリプト内のsearchTypeプロパティを使用して画像検索時に設定できます。

注:この方法はテキストの発見にのみ使用されます。

例:

Click "HelpMenu" -- ヘルプメニューの画像を見つけ、それをクリックします。
Click (imageName:"HelpMenu", searchType:"smoothed for text") -- テキストの滑らかさによる検索タイプを使用してヘルプメニューの画像を見つけ、それをクリックします。

画像検索についての詳細情報は、画像の検索を参照してください。

光学文字認識 (OCR)

テキストの内容が動的であるため(テキストの内容を事前に予測できない、または可能な値が多すぎて画像のキャプチャが実用的でない場合)、主な解決策はEggplant Functionalの光学文字認識(OCR)機能を使用することです。

OCRは解釈的なアルゴリズムを使用して画面上のピクセルパターンを解読し、辞書ライブラリと比較して見つけたものによってテキスト内容を判断します。

OCRはテキストの読み取りまたは検索に使用できます。SUTの画面からテキストを読み取るためにOCRを使用するには、ReadText関数を使用します。OCRでテキストを読み取るための可能なすべてのパラメータはReadText関数のドキュメンテーションの下にあります。OCRでテキストを検索するには、Text:パラメータをEggplant Functionalの任意のコマンドとペアにします。

例:

Click (Text:"Help") -- 任意の外観でHelpという単語を検索し、クリックします。

以下のセクションには、OCRを使ったテストの基本が含まれています。OCRの使用方法について詳しくは、光学文字認識(OCR)の作業を参照してください。

検索の種類

OCRは2種類の異なる検索を行うために使用できます:

  • SUT上のテキストの検索: それが存在することを確認するため、またはそれと対話するために、SUT上の特定の文字列を見つける必要があるとき。これは多くの場合、データファイルのような外部ソースからスクリプトに引き込まれた情報です。外部データファイルの使用方法について詳しくは、データ駆動型テストを参照してください。
  • SUT上のテキストの読み取り: SUTスクリーンから文字列を読み取る必要があるとき。これは通常、事前に知らない値です。

これらの検索タイプの両方は画面上のテキストを「検索」しますが、異なるコマンドを使用する必要があり、利用可能なOCRプロパティは異なります。たとえば、Languageパラメータは読み取りと検索の両方に定義できますが、caseSensitiveプロパティはテキストを検索するときだけ使用されます。また、読み取り検索とテキスト検索の両方で検索範囲を設定できますが、ReadText関数はこのように期待します。OCRプロパティの完全なリスト、およびどのプロパティがどのタイプの検索に使用できるかの情報を含めて、テキストプロパティを参照してください。

テキストを検索する方法

OCRテキスト検索は画像検索に似ており、通常は同じコマンドや関数を使用します。画像名を指定する代わりに、textを先行させて引用符で囲んだテキスト文字列を指定します。

例:

Click (text:"Eggplant") -- テキスト文字列Eggplant(任意のフォーマット)の最初のインスタンスを検索し、クリックします。

ただし、OCR検索のほとんどは、他のプロパティがtextパラメータと一緒に設定されることを必要とします。最も頻繁に使用されるのはsearchRectangleプロパティです。OCRを使用してテキストを検索するときに使用できるすべてのプロパティを確認するには、テキストプロパティのOCRプロパティ表を参照してください。

検索範囲は通常、画像を使用して定義されますが、このプロパティに座標を渡すこともできます。キャプチャした画像のホットスポットは、使用されるポイントを定義します(このポイントを移動する方法の詳細については、ホットスポットの使用を参照してください)。下記の例では、TLImageを使用して検索範囲の左上角を定義し、BRImageを使用して領域の右下角を定義するように検索範囲が設定されています。

例:

Click (text:"Patient Name",searchRectangle:("TLImage","BRImage")) -- 画像を使用して定義した検索範囲内で患者の名前を検索します

テキスト文字列のすべての位置を見つけたい場合は、EveryImageLocation関数を使用します:

例:

log EveryImageLocation (text:"OCR") -- テキスト文字列OCRを検索し、見つかったすべてのインスタンスの画面座標をログに記録します

テクニカルトーク

裏側ではどのように動作しているのでしょうか? 一般的なテキストプロパティリストを使用してテキストを検索すると、OCRエンジンはまずSUT上の各テキストインスタンスを検索し、その後テキスト値を評価してあなたが探している文字列を見つけます。テキストのフォーマットは考慮されないため、テキストの見た目を記述する必要はありません。

テキストの読み取り方法

OCRを使用したテキストの読み取りは、ReadText関数を使用します。テキストの検索と同様に、指定した範囲内のテキストを読み取ることができます。違いは、ReadTextではsearchRectangleプロパティを使用する必要がなく、代わりに直接関数に範囲、画像セット、またはポイントを渡すだけでよいことです。ReadText関数は、すべての関数と同様に、putlogなどの標準的なEggplantコマンドと一緒に実行されます。テキストの検索時と同様に、検索にさまざまなプロパティを設定できます。例えば、下記の例ではLanguageプロパティが設定されています。テキストの読み取りに使用できるプロパティの完全なリスト、およびそれらのプロパティがどの種類の検索に使用できるかについての情報は、テキストプロパティを参照してください。

例:

Log ReadText (("TLImage","BRImage"), Language: "Spanish") -- 画像 "TLImage"(左上角)と "BRImage"(右下角)によって定義された矩形内で読み取られたスペイン語のテキストをログに記録します

SUTおよび外部ファイルのテキストに関する考慮事項

あなたはまた、SUT上でテキストをタイプする必要があるかもしれません。例えば、テストの一部としてフォームのフィールドに記入することが含まれる場合があります。SenseTalkでテキストを追加する方法については、SUT上でのタイピングをご覧ください。

また、外部データファイルからテキストを読み取ることもできます。この機能により、データ駆動テストなどを設定できます。この機能について学ぶには、データの収集と利用をご覧ください。