画像ファイルとスイート情報
このセクションの関数は、画像ファイルとEggplant Functionalスイートに関連付けられたさまざまなプロパティを返します。
ImageInfo
関数
挙動: 単一の画像に対する画像プロパティリスト、または複数の画像リファレンスに対する画像プロパティリストを返します。利用可能なデータによって、リストには次のプロパティが含まれることがあります:
- CaptureDate: 画像のキャプチャ日時、時間を含むフォーマット (yyyy-mm-dd hh:mm:ss +0000) で示されます。最後の4桁はGMTのオフセットを表します。
- CaptureHost: 画像がキャプチャされたSUTの名前。
- CaptureLocation: Viewerウィンドウで画像がキャプチャされた時の、画像の左上隅の位置を示す座標。
- CaptureScreenSize: 画像がキャプチャされたSUTの画面の寸法を、ピクセル単位 (
width
,height
) で表します。 - Description: Suite Editor Infoパネルの画像説明。
- HotSpot: 画像のホットスポットの座標を、(x, y) で示します。
- ImageLocation: 画像のホットスポットの画面上の座標。ImageLocation() 関数を参照してください。
- ImageName: 画像ファイルの名前。
- ImagePath: 画像ファイルのフルパス名。
- ImageRectangle: ImageRectangle() 関数を使用して見つけた画像の矩形座標。
- ImageSize: 画像のピクセル単位のサイズを、(
width
,height
) で示します。 - ImageTolerance: SUTで画像をキャプチャする際に使用された許容設定。
- Pulsing: 画像がパルシング設定でキャプチャされたかどうか (true/false)。
- Scale: 画像をキャプチャするために使用したスケール。
- SearchType: 画像を保存する際に選択された検索タイプ。
パラメーター: 1つ以上の Image References。 戻り値: 画像プロパティリスト、または画像プロパティリストのリスト。例えば:
((CaptureDate:"2016-10-19 15:20:52 -0600", CaptureHost:"Windows", CaptureLocation:(527,707), CaptureScreenSize:(1024,768), Description:"", HotSpot:(11,19), ImageLocation:"", ImageName:"Value", ImagePath:"C:/Users/Carrie/Documents/Demo.suite/Images/ValueField.png", ImageRectangle:"", ImageSize:(23,39), Pulsing:"False", Scale:"1", SearchType:"Tolerant"))
例:
put ImageInfo("BrowserIcon") into ListVariable //画像情報関数の戻り値を変数に格納します。
例:
put the number of items of imageInfo("CheckBox") into NumberinReturn //ImageInfoの戻り値のアイテム数を格納します。
if NumberinReturn is greater than 1 then log "There are" && NumberinReturn && "images in the collection." //戻り値のアイテム数が1より大きいかどうかをチェックし、その場合は画像が実際に画像コレクションであることを意味します。
例:
copy file imageInfo("CompanyLogo")'s imagePath to folder "C:\Users\Carrie\Desktop\ResultsFolder" //現在のスイート内の画像をeggPlantマシンの新しい場所にコピーします。
例:
put the suiteinfo's imagesfolder into myimagefolder //現在のスイートに画像フォルダへのパスを保存します。
put the files of myimagefolder as a list into myimages //画像フォルダ内のすべてのファイル名(imageinfoファイルを含む)をリストとして格納します。
repeat with each item of myimages by reference //メモリ内ではなく、参照によりリストを繰り返します。
if it contains "imageinfo" then delete it //それがimageinfoファイルならば、リストからファイル名を削除します。
end repeat
repeat with each item of myimages //imageinfoファイル名が削除された後のファイル名リストを繰 り返します。
put imageinfo(it)'s CaptureDate into mycapturedate //CaptureDateプロパティ値を変数に格納します。
If mycapturedate is not empty and mycapturedate is earlier than 1 year ago then //CaptureDateが1年以上前に行われたかどうかを判断します。
do merge of <<Logwarning "Image [[it]] was captured over a year ago.">>//merge関数を使用して文字列を構成し、メッセージをログに記録します。
end if
end repeat
画像ホットスポット機能
動作: 画像の左上隅を基準とした、画像のホット スポットの座標 (x
,y
) を返します。
SUT上の見つかった画像のホットスポット位置を操作する必要がある場合は、ImageLocation() 関数を使用してください。
戻り値: ピクセル単位のサイズ(幅
、高さ
)。例:(48,19)
Returns: Coordinates. For example:(-65,90)
例:
set PointAdjustment to ImageHotSpot("Logo") - imageSize("Logo")//画像の右下角とホットスポットとの差を見つけます。
例:
log imagehotspot("CompanyLogo")
ImageSize
関数
動作: この関数は、指定された画像のピクセル単位のサイズ(幅
、高さ
)を返します。画像が見つからない場合は例外が発生します。
パラメ ーター: 単一の
画像、画像コレクションは除外します。
Returns: Size in pixels (width
, height
). For example: (48,19)
例:
put ImageSize("image") into ImageSizeVariable //imageSize関数の戻り値を変数に格納します。
例:
If the ImageSize of"ConfirmationNumberField" is not(30,40) then Log "The image has changed size since original capture." //画像の サイズが予想どおりであるかどうかを確認します。
例:
params CollectionName //スクリプトをパラメータ化して、画像コレクションの名前を受け取ります。
put item 1 of ImageInfo(CollectionName) into myImage //ImageInfoの戻り値の最初の項目(これはコレクション内の単一画像のImageInfo)を格納します。
put the folder of myImage's ImagePath into CollectionFolder //folder関数を使用して、画像のファイルパスに基づいて画像のフォルダパスを見つけます。これは画像コレクションのフォルダパスです。
put the files of CollectionFolder into ImagesList //画 像コレクション内のファイルの名前を格納します。
repeat with each Image of ImagesList //各ファイル名(imageinfoファイルを含む)を繰り返します。
if myFile contains ".png" then //ファイル名が画像ファイルに属しているかどうかを確認します。
put CollectionName & slash & myFile into ImageRelativePath //画像ファイル名を使用してスイートに対する相対パスを構築します。
put ImageRelativePath's ImageSize into ImageSize //imageSize関数の戻り値を変数に格納します。
insert item 1 of ImageSize times item 2 of ImageSize after ListofAreas //コレクション内の各画像の面積のリストを作成します。
end if
end repeat
Log "The median area of the images in the collection "&CollectionName&" is "& the median of ListOfAreas&"." //median関数を使用してコレクション内の画像の中央値面積を計算し、それについてのメッセージをログに記録します。
ImageColorAtLocation
関数
振る舞い: 与えられた画像内の単一のピクセルの色値を、colorFormatグローバルプロパティで指定されたフォーマットで表示します。ピクセルの座標は、画像の左上隅に対して相対的です。
SUT上のピクセルの色を決定する必要がある場合は、ColoratLocation() 関数を使用してください。
パラメーター: 1つの画像名と1つの座標位置。
戻り値: 色の値。例えば:(255,255,255)
。詳細は Color Values in SenseTalkを参照してください。
例:
set the colorFormat to "HSB" //色を0から1までの色相、彩度、明度の値に基づいて表示するように設定します。
put ImageColorAtLocation("myIcon",[23,1]) //指定された画像の位置[23,1]の色を返します。つまり、HSB、0.592、0.977、0.682
例:
function FindChartreusePercentage myImage //FindChartreusePercentageという名前の関数を、パラメーター値myImageで宣言します。
if "Chartreuse" is not among the keys of the NamedColors then set the NamedColors.Chartreuse to color(127,255,0) //chartreusesが名前付き色ではない場合、名前付き色のグローバルプロパティリストにchartreusesを追加します。
put the width of imageSize(myImage) into XDirection //imageSizeのx座標を変数に格納します。
put the height of imageSize(myImage) into YDirection
set TotalPixels to XDirection x YDirection //画像内のピクセルの合計数を計算します。
set ColorPixels to 0 //chartreuse色のピクセルの集計をゼロにリセットします。
repeat YDirection times //画像の高さを下に繰り返します。
put the repeatIndex - 1 into YCoord //現在のピクセルのY座標を追跡します repeat XDirection times //画像の幅を横に繰り返します。
repeat XDirection times //画像の幅を横断します。
put the repeatIndex - 1 into XCoord //現在のピクセルのX座標を追跡します。
put imagecoloratlocation(myImage, (XCoord,YCoord)) into ReturnedColor //現在のピクセルのRGB値を格納します。
if ReturnedColor is color("Chartreuse") then add 1 to ColorPixels //ピクセルがchartreuseであれば、ピクセルを集計します。
end repeat
end repeat
return round((ColorPixels/TotalPixels) * 100, 1) //chartreuseピクセルのパーセンテージを、小数点以下1位まで四捨五入して返します。
end function
OpenSuites
関数
振る舞い: 現在のスクリプトが利用可能なすべてのスイートのリストを 返します。このリストには、スクリプト自体のスイート、OpenSuite (deprecated)
コマンドで開いたスイート、およびEggplantCommonスイートが含まれます。
パラメーター: なし 戻り値: 現在のスクリプトが利用可能なすべてのスイートのリスト。例えば:
(C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite,C:/Program Files (x86)/eggPlant/Eggplant.app/Resources/EggplantCommon.suite)
例:
put OpenSuites() into SuitesInUse
ResourcePath
関数
動作: パラメータ値が提供されていない場合、呼び出し元のスイートのリソースフォルダの フルパスを返します。パラメータ値が提供されている場合、そのパラメータ値を末尾に追加したスイートのリソースフォルダのフルパスを返します。
パラメータ: なし、またはスイートリソースの名前。
戻り値: 呼び出し元のスイートのリソースフォルダのパス、または、パラメータ値が末尾に追加された呼び出し元のスイートのリソースフォルダのパス。例えば:
パラメータ値なし:
C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite/Resources
リソース名パラメータ値:
C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite/Resources/testlist.txt
この関数は常に呼び出し元のスイートのフルパスを返すため、ヘルパースイートなどの他のスイート内に格納されたスイートリソースのファイルパスを参照するのには役立ちません。
例:
log ResourcePath() //呼び出し元のスイートのリソースフォルダのパスをログ出力します
例:
set ProtectedApps to file ResourcePath("ProtectedApps.txt") //リソースファイル"ProtectedApps.txt"の内容をProtectedAppsという名前の変数に格納します
例:
repeat with each line of file ResourcePath("TestData.csv") //呼び出し元のスイートのリソースフォルダにある"TestData.csv"という名前のファイルの各行に基づいて繰り返します
CalculatorTest the first item of it, the second item of it //ファイルの現在の行のリストの最初と2番目の項目をスクリプトCalculatorTestにパラメータとして渡します
end repeat
例:
BeginTestCase "ResultsLoaded" // "ResultsLoaded"という名前のカスタムテストケースを作成します
WaitFor 20, "Results"
EndTestCase "ResultsLoaded"
set myResult to the result //テストケース"ResultsLoaded"からの結果プロパティリストをmyResultという名前の変数に格納します
put myResult.testcase & comma & myResult.duration & comma & myResult.starttime &CRLF after file ResourcePath ("myTimings.csv") //連結した文字列を呼び出し元のスイートのリソースファイルmyTimings.csvの最後に追加します
例:
set UserFilesList to the files of the resourcePath //呼び出し元のスイートのリソース内の全ファイルオブジェクトのリストを格納します。これは単に全ファイル名またはパスのリストを格納するのとは異なります
repeat with each userSet of UserFilesList //UserFilesList内の各userSetという名前のファイルに対して繰り返します
RunWithNewResults "LoginTest", userSet // "LoginEst"という名前のスクリプトを呼び出し、現在のファイルオブジェクトをスクリプトに渡します
end repeat
SuiteInfo
関数
動作: スイートに関する以下の情報を返します:
- 名前: スイートの名前。
- パス: スイートのフルパス。
- ScriptsFolder: Scriptsフォルダのパス。
- ImagesFolder: Imagesフォルダのパス。
- ResultsFolder: Resultsフォルダのパス。
- バージョン: スイートのEggplant Functionalのバージョン番号(通常はスイートを作成したEggplant Functionalのバージョン)。
- 説明: スイートの設定タブで入力されたスイートの説明。
スイート内のスクリプトからSuiteInfo
を呼び出すと、ヘルパースイートを持つスイートでは、Eggplant Functionalは主スイートまたは呼び出しスイートとヘルパースイートの両方のパスを返します。ヘルパースイート内のスクリプトからSuiteInfo
を呼び出すと、Eggplant Functionalは主スイートまたは呼び出しスイートのパスのみを返します。ヘルパースイートのパスは返しません。
パラメーター: なし、スイートのフルパス、またはデフォルトのスイートディレクトリにあるスイートの名前。
戻り値: スイート情報のプロパティリスト。例えば:
(description:"", helperSuites:((filePath:"C:/Users/Carrie/Documents/eggPlantSuites/NopCommerce.suite")), imagesFolder:"C:/Users/Carrie/Documents/eggPlantSuites/DemoSuite.suite/Images", name:"DemoSuite.suite", path:"C:/Users/Carrie/Documents/eggPlantSuites/DemoSuite.suite", resultsFolder:"C:/Users/Carrie/Documents/eggPlantSuites/DemoSuite.suite/Results", scriptsFolder:"C:/Users/Carrie/Documents/eggPlantSuites/DemoSuite.suite/Scripts", version:"1608291744")
テックトーク:
set mySuiteInfo to SuiteInfo() //呼び出しスイートのSuiteInfo()をmySuiteInfoという名前の変数に格納します
例:
log SuiteInfo("C:\Users\Pamela\mySuite") //指定したパスのスイートのSuiteInfoをログに記録します
例:
CaptureScreen {name:SuiteInfo().ImagesFolder&slash&"CurrentLogo",rectangle:["WelcomeImage","Border"]} //スクリーンショット"CurrentLogo"をキャプチャし、呼び出しスイートの画像フォルダに保存します。これにより、後の画像検索で容易に使用できます
例:
set ScriptFileList to the files of SuiteInfo().ScriptsFolder //ScriptsFolder内の全ファイルオブジェクトのリストをScriptFileListという名前の変数に格納します
例:
set the InitialSuites to the folder of SuiteInfo().Path&"windows.suite" //InitialSuitesを特定のスイートに設定します。これは呼び出しスイートが現在位置しているフォルダパスに基づいています。これは、eggPlantコントローラ上のスイートの位置が一定でないが、スイート間の相対パスが同じ場合に便利です
例:
フォルダ内のすべての画像に対して画像検索を実行するためにWaitForAllコマンドを使用するコード:
on FindAllInFolder folderToSearch, waitTime //folderToSearchとwaitTimeの2つのパラメータを取るFindAllInFolderという名前のカスタムコマンドを作成します
put SuiteInfo().imagesFolder&"/"&folderToSearch&"/" into imgFolder //興味のある画像フォルダのフォルダパスを変数に格納します
put each item of files(imgfolder) where each does not end with "info" into imgsToFind //フォルダ内のすべての画像ファイルのリストを作成し、それを変数に格納します
put folderToSearch & each item of imgsToFind into imgsToFind //ファイル名のリストとフォルダ名を組み合わせて新しいリストを作成します
WaitForAll waitTime, imgsToFind //WaitForAllコマンドを使用して、フォルダ内のすべての画像がSUTに存在することを確認します
end FindAllInFolder