画像とOCRの検索
これらのコマンドと関数は、テスト対象システム(SUT)上で画像または光学文字認識(OCR)の検索を実行します。
以下の画像とOCRの検索コマンドと関数の検索動作は、ImageSearchCount、ImageSearchDelay、ImageSearchTime のグローバルプロパティを使用することでさらに制御することができます。
EveryImageLocation
関数
動作: 与えられた画像またはテキスト(OCR)のすべての出現箇所をSUTで検索します。画像の各出現箇所のホットスポット座標のリスト、またはOCRを使用した場合のテキスト文字列の中心のリストを返します。座標は発見された順にリストされ、SUTの左上角に最も近い画像とテキストが最初に見つかります。画像またはテキスト(OCR)が見つからない場合、EveryImageLocation
は空のリストを返します。
パラメータ: 一つ以上の画像参照またはプロパティ、またはテキストプロパティ(OCR用)。
構文:
EveryImageLocation( imageOrTextReference )
戻り値: 与えられた画像のすべてのインスタンスの座標。例えば:
((288,325),(288,356),(288,387),(288,448))
例:
追加の画像検索プロパティを渡す場合、この例のように ImageName
プロパティの指定が必要です。
log EveryImageLocation(ImageName:"CheckBoxes",scale:[1,.5]) // 元のサイズと半分のスケールで見つけた画像のすべての出現箇所のホットスポット座標のリストをログに記録します。画像検索の追加プロパティを含めるときに ImageName プロパティを使 用することに注意してください。
例:
click the penultimate item of EveryImageLocation(text:"AddressField") // テキスト(OCR)の出現箇所のリストの最後から2番目の項目をクリックします。
例:
set the RemoteWorkInterval to .1 // RemoteWorkInterval(デフォルト=.7)を短縮して、Eggplant FunctionalがSUTに送信するアクション間の一時停止を減らします。この変更により、クリックのシリーズがはるかに高速に実行されます。
repeat with EveryImageLocation("RadioButton") // everyImageLocation()で見つけた画像の各出現箇所を繰り返します。
click it // it変数を使用して、repeatループが操作中の現在の出現箇所をクリックします。
end repeat
set the RemoteWorkInterval to .7
例:
// 次の例は、前の例の別の構文を提供します。
repeat with each item of EveryImageLocation("RadioButton")
click it // it変数を使用して、repeatループが操作中の現在の出現箇所をクリックします。
end repeat
EveryImageLocation
関数を呼び出すと、すぐにthe result
を呼び出して、EveryImageLocation
で表されるすべての画像のImageInfo
を返すことができます。
例:
put EveryImageLocation("GreenSaveButton","BlueSaveButton","RedSaveButton") // 画像のすべての出現箇所のホットスポット座標のリストを返します。
put the result // EveryImageLocationで表現されるすべての画像のimageInfoを返します。
EveryImageRectangle
関数
動作: SUTで指定された画像またはテキスト(OCR)のすべての出現箇所を検索します。画像またはテキスト(OCR)のすべての出現箇所の矩形座標のリストを返します。座標は、SUTの左上隅に最も近い画像とテキストが最初に見つかる順序でリストされます。画像またはテキスト(OCR)が見つからない場合、EveryImageRectangle
は空のリストを返します。
パラメータ: 1つ以上の画像リファレンスまたはプロパティ、またはテキストプロパティ (OCR用)。
文法:
EveryImageRectangle( imageOrTextReference )
戻り値: 指定された画像または画像のすべてのインスタンスの矩形座標。
例:
put EveryImageRectangle("TotalAmountLabel", "ItemizedAmountLabel") // 画像のすべての出現箇所の矩形座標のリストを返します。
例:
assert that the number of items in EveryImageRectangle(ImageName:"CheckBoxes",searchRectangle:["SelectOptionsUpperLeft","SelectOptionsLowerRight"]) is 4 // 画像の出現箇所の数が期待値4に等しいかどうかを検証します。例出力:AssertionFailed(主張:EveryImageRectangle(ImageName:"ImageName")の項目の数は4です; 実際には:5は4に等しくない)
例:
Set StatusRectangles to EveryImageRectangle(text:"StatusLabel") // EveryImageRectangleの戻り値をStatusRectanglesという変数に保存します。
Log "There are"&&the number of items of StatusRectangles&&"statuses to check." // StatusRectanglesに保存されたリストの出現回数と2つの文字列を連結してログに出力します。
repeat with each Rectangle of StatusRectangles // Rectangleという変数名を使用してリストの各項目を繰り返します。
Set StatusIndicatorLocation to the TopRight of Rectangle plus (15,0) // 現在の出現箇所の右上隅から15ピクセル右に座標調整を行い、その結果を変数StatusIndicatorLocationに保存します。
If ColorAtLocation(StatusIndicatorLocation) is "59,170,43" then Log "The status is green." // ColorAtLocation()関数を使用してStatusIndicatorLocationのRGB値を見つけ、それを期待値、59,170,43と比較します。
end repeat
EveryImageRectangle
関数を呼び出すと、すぐにthe result
を呼び出して、EveryImageRectangle
で表されるすべての画像のImageInfo
を返すことができます。
例:
put EveryImageRectangle("GreenSaveButton","BlueSaveButton","RedSaveButton") // これらの画像のすべての出現箇所の矩形座標のリストを返します。
put the result // EveryImageRectangleで表現されるすべての画像のimageInfoを返します。
ImageFound
関数
動作: Viewerウィンドウで指定された画像を検索します。画像が見つかった場合はtrueを返し、見つからなかった場合はfalseを返します。最大待機時間パラメータを使用すると、falseが返される前に画像が見つかる時間を設定できます。
パラメータ: 1つ以上の画像リファレンスまたはプロパティ、またはテキストプロパティ (OCR用)。
文法:
ImageFound( imageOrTextReference )
返り値: True
またはFalse
。
例:
if ImageFound(ImageName:"OKButton") then // 画像が見つかるかどうかをチェックします。
click FoundImageLocation() // ImageFoundが真を返す場合、FoundImageLocation関数を使用してImageFound関数によって見つかった画像の保存された位置をクリックします。
else
TypeText AltKey,F4 // ImageFoundが偽を返す場合、アプリケーションを閉じるためのキーストロークを実行します。
end if
例:
この例のように、追加の画像検索プロパティを渡すときには、ImageName
プロパティを含める必要があります。
Repeat until ImageFound(ImageName:"NextButton",WaitFor:0) // このリピートループは、ImageFound関数が真を返すまで反復します。
Typetext PageDown // ページダウンキーボードアクションを送信してページをスクロールダウンします。
Wait 2 // スクロールアクション後にアプリケーションが停止するまで2秒待ちます。
if the repeatindex is greater than 5 then throw "Image Not Found:", "NextButton not found when scrolling." // この条件文はリピートループが5回以上反復されたかどうかをチェックし、そうであれば例外を投げて実行を停止します。
end repeat
最大時間が0に設定されている場合、Eggplant Functionalはすぐに検索を行い、Viewerウィンドウを更新したり、マウスを再配置したりして画像を見つけようとはしません。これは、存在しない可能性のある画像を検索する最も速い方法です。
ImageLocation
関数
動作: SUT上の指定された画像またはテキスト(OCR)を検索します。見つかった最初の画像の最初の出現のホットスポット座標またはテキスト(OCR)の矩形の中心を返します。画像が見つからない場合は、例外がスローされます。
パラメータ: 1つ以上の画像リファレンスまたはプロパティ、またはテキストプロパティ (OCR用)。
文法:
ImageLocation( imageOrTextReference )
返り値: 画像のホットスポットの座標またはテキスト(OCR)の矩形の中心。例えば: (338, 335)
例:
set SectionHeaderLocation to ImageLocation(text:"Billing Address") // ImageLocationの戻り値をSectionHeaderLocationという変数に保存します。テキスト(OCR)検索なので、戻り値は "Billing Address"の矩形の中心の座標です。
例:
click ImageLocation("NameLabel") + [50,-10] // 画像のホットスポットの位置から右に50ピクセル、上に10ピクセルの位置をクリックします。
例:
tap {ImageName:"OKButton",searchRectangle:["PopupHeader",ImageLocation("LowerRightAnchor") - [400,500]]} // searchRectangleの右下角を設定し、LowerRightAnchor画像のホットスポットから上に400ピクセル、左に500ピクセル調整します。
例:
スクロールバーの下ボタンの位置を保存して、保存した位置をクリックすることで、Eggplant Functionalは一度だけ画像を検索する必要があり、ボタンを10回クリックする実行速度が向上します:
set ScrollDownButtonLocation to ImageLocation("ScrollDownButton")
repeat 10 times
click ScrollDownButtonLocation
end repeat
ImageRectangle
関数
動作: SUTで指定した画像またはテキスト(OCR)を検索し、最初に見つかった画像の最初の出現の矩形座標を返します。画像検索の場合、ImageRectangle
はキャプチャした画像のサイズと形状を尊重します。ただし、ClipRectangle
画像検索プロパティが使用されている場合は除きます。OCR検索の場合、ImageRectangle
は自動的にSUT上に表示されるテキスト文字列の周囲にフィットします。画像またはテキスト(OCR)が見つからない場合、例外がスローされます。
パラメーター: 1つ以上の画像参照。
構文:
ImageRectangle( imageOrTextReference )
戻り値: 見つかった画像の矩形座標。例: (348,451,460,554)
例:
put ImageRectangle ("CompanyLogo") // ImageRectangleの戻り値をRunウィンドウにのみ表示します。
例:
log "The coordinates of the rectangle are"&&ImageRectangle (ImageName:"PhoneTypeLabel",searchRectangle:["PhoneContactHeader","SectionDivider"]) // 文字列とImageRectangleの戻り値をスペースを挟んで連結するために連結演算子を使用します。画像検索の追加プロパティを含める際のImageNameプロパティの使用に注意してください。
例:
click the topLeft of ImageRectangle (ImageName:"EnableSetting") // ImageRectangle関数は、SUTを制御するコマンドと組み合わせることができます。ImageRectangleの特定の角を選択するためにtopLeft関数を使用することに注意してください。
例:
set NameFieldRectangle to ImageRectangle (Text:"Name") // 見つかったテキスト(OCR)の矩形座標を変数に保存します。
set NameFieldValue to ReadText(Right of NameFieldRectangle, Top of NameFieldRectangle, Width of the RemoteScreenSize, Bottom of NameFieldRectangle) // ReadTextを使用して、NameFieldLocationの直接右のエリアを読み取り、SUT画面の右端まで読み取ります。
WaitFor
コマンド
動作: スクリプトの次の行の実行を、画像またはテキスト(OCR)がSUT上に見つかるまで停止します。指定した待ち時間内に画像またはテキスト(OCR)が見つからない場合、例外がスローされます。実際の待ち時間は、指定した待ち時間よりも長くなる可能性があります。これは、待ち時間が自動的にSUTの解像度、Discrepancy設定、ネットワーク遅延、画像コレクションのサイズなどの要因に調整されるためです。
パラメーター: 待ち時間、1つ以上 の画像参照またはプロパティ、またはテキストプロパティ(OCR用)。待ち時間のデフォルト単位は秒です。
構文:
WaitFor time , imageOrTextReference1 {, imageOrTextReference2 ...}
例:
WaitFor 6.5, "OKButton", "ExitButton" // どちらかの画像が表示されるまで最大6.5秒間待ちます。
例:
WaitFor 2 minutes, {ImageName:"InstallationCompleteMessage",searchRectangle:["InstallProgressDialogUpperLeft","InstallProgressDialogLowerRight"]}
WaitFor
は、任意の画像またはテキスト(OCR)の検索コマンドのプロパティとしても使用できます。WaitFor
コマンドと同様に、WaitFor
プロパティは、Eggplant Functionalが指定した画像がSUTに表示されるまでの最大待ち時間です。
例:
Click (ImageName: "Done_button", waitFor: 2 minutes)
また、ImageSearchTimeグローバルプロパティを使用して、画像またはテキスト(OCR)の検索範囲の検索時間に影響を与えることもできます。
wait
コマンドは、スクリプトが設定した特定の時間を常に待つという点で、waitFor
およびwaitForAll
コマンドとは異なります。その後、スクリプトは次のステップに進みます。waitFor
およびwaitForAll
コマンドは、指定された要素がSUTスクリーン上で検出されるまでのみ待ちます。要素が待ち時間内に検出されない場合、例外がスローされます。
関連:
Wait
: このコマンドを使用して、特定の時間を待つように設定します。
WaitForAll
コマンド
動作: 画像またはテキスト(OCR)のパラメーターの全て
がViewerウィンドウで見つかるまで、次のスクリプトの実行を停止します。最大待ち時間内に全ての画像が見つからない場合、例外がスローされます。
パラメーター: 待ち時間と、1つ以上のイメージ参照またはプロパティ、またはテキストプロパティ(OCR用)。待ち時間のデフォルトの単位は秒です。
構文:
WaitForAll time , imageOrTextReference1 {, imageOrTextReference2 ...}
例:
この例では、WaitForAll
は、単一のテキスト文字列「Aretha Franklin」が表示されるまで、最大15秒待ちます。
WaitForAll 15, text:"Aretha Franklin"
例:
2つの画像を待つ必要がある場合、名前を文字列として渡すことができます。例えば次のようになります。
WaitForAll 15, "OKButton", "ExitButton"