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上の各テキストインスタンスを検索し、その後テキスト値を評価してあなたが探している文字列を見つけます。テキストのフォーマットは考慮されないため、テキストの見た目を記述する必要はありません。