画像ファイルおよびスイート情報
ここに挙げる関数は、画像ファイルやEggplant Functionalスイートに関連した各種プロパティを返します。
ImageInfo()関数
例:
put ImageInfo("BrowserIcon") into ListVariable // imageInfo関数の戻り値を変数に格納します。
例:
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." // 戻り値に含まれるアイテムの数が2個以上(つまり、画像が実際には画像コレクション)かどうかをチェックします。
例:
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
パラメータ:1つまたは複数の画像参照。
戻り値:画像プロパティリストまたは画像プロパティリストのリスト。 例:
((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"))
挙動:1つの画像に対しては画像プロパティリストを、複数の画像参照に対しては画像プロパティリストのリストを返します。 利用可能なデータに応じて、次のプロパティがリストに含まれる可能性があります。
- CaptureDate:画像キャプチャの日付。フォーマットは(yyyy-mm-dd hh:mm:ss +0000)で時間も含まれます。末尾の4桁はGMTオフセットを表します。
- CaptureHost:画像がキャプチャされたSUTの名前。
- CaptureLocation:Viewerウィンドウ内でキャプチャされたときの、画像の左上角の位置を示す座標。
- CaptureScreenSize:画像がキャプチャされたSUT画面の寸法。ピクセル単位で(幅、高さ)の形で表されます。
- Description:Suite Editor Infoパネル内の画像説明。
- HotSpot:画像のホットスポットの座標(x, y)。
- ImageLocation:画像のホットスポットの、画面上での座標。 ImageLocation()関数をご覧ください。
- ImageName:画像ファイルの名前。
- ImagePath:画像ファイルのフルパス名。
- ImageRectangle:ImageRectangle()関数を使用して見つかった画像の矩形座標。
- ImageSize:画像のサイズ。ピクセル単位で (幅, 高さ)の形で表されます。
- ImageTolerance:SUT上での画像キャプチャ時に使用された許容値設定。
- Pulsing:画像がパルシング設定でキャプチャされたか否か(true/false)。
- Scale:画像のキャプチャに使われた縮尺。
- SearchType:画像の保存時に選択された検索タイプ。
ImageHotSpot() 関数
例:
set PointAdjustment to ImageHotSpot("Logo") - imageSize("Logo")// 画像の右下角と画像のホットスポットとの間の差を求めます。
例:
log imagehotspot("CompanyLogo")
パラメータ:単一の画像(画像コレクションを除く)。
戻り値:座標。 例:(-65,90)
挙動:画像のホットスポットの、画像の左上角に対する座標(x,y)を返します。
ImageSize()関数
例:
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の戻り値の最初のアイテム(コレクション内にある1画像の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関数を使ってコレクション内の画像群の面積の中央値を計算し、それについてのメッセージをログします。
パラメータ:単一の画像(画像コレクションを除く)。
戻り値:(幅, 高さ)の形のピクセル単位のサイズ。 例:(48,19)
挙動:与えられた画像のサイズをピクセル単位の(幅, 高さ)の形で返します。 画像が見つからない場合は、例外が発生します。
ImageColorAtLocation()関数
例:
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) // chartreuseがまだ名前付きの色として設定されていない場合、名前付きの色のグローバルプロパティリストにchartreuseを追加します。
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 // 画像の幅にわたって繰り返しを行います。
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) // 小数第1位に丸めた、chartreuse色のピクセルのパーセント割合を返します。
end function
パラメータ:画像名1つと座標位置1つ。
戻り値:カラー値。 例:(255,255,255) 詳しくは、SenseTalkにおけるカラー値をご覧ください。
挙動:与えられた画像内のある1ピクセルのカラー値を、the colorFormat グローバルプロパティによる指定のフォーマットで返します。 ピクセルの座標は、画像の左上角に対する相対的なものです。
OpenSuites()関数
例:
put OpenSuites() into SuitesInUse
パラメータ:なし
戻り値:現在のスクリプトで利用できる全スイートのリスト。 例:
(C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite,C:/Program Files (x86)/eggPlant/Eggplant.app/Resources/EggplantCommon.suite)
挙動:現在のスクリプトで利用できる全スイートのリストを返します。 リストには、そのスクリプト自身のスイート、OpenSuite(非推奨)コマンドで開かれたスイート、EggplantCommonスイートが含まれます。
ResourcePath()関数
例:
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」からのthe resultプロパティリストを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
パラメータ:なし。もしくは、あるスイートリソースの名前。
戻り値:呼び出し元スイートのリソースフォルダのパス。もしくは、呼び出し元スイートのリソースフォルダのパスにパラメータを追加した値。 例:
パラメータ値なしの場合:
C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite/Resources
リソース名をパラメータ値とした場合:
C:/Users/Carrie/Documents/eggPlantSuites/Demo.suite/Resources/testlist.txt
挙動:パラメータ値を与えない場合は、呼び出し元スイートのスイートリソースフォルダのフルパスを返します。 パラメータ値を与えた場合は、スイートリソースフォルダのフルパスの末尾にパラメータ値を追加したものを返します。
SuiteInfo()関数
例:
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 // スクリプトフォルダ内にある全ファイルオブジェクトのリストを ScriptFileListという変数に格納します
例:
set the InitialSuites to the folder of SuiteInfo(). Path&"windows.suite" // InitialSuitesを、呼び出し元スイートが現在位置しているフォルダのパスを基に特定したスイートに設定します。これは、eggPlantコントローラ上でのスイートの位置が不整合でもスイート同士の相対パスは変わらない場合に便利です
例:
// WaitForAllコマンドを使い、フォルダ内にあるすべての画像の画像検索を行うコードです
on FindAllInFolder folderToSearch, waitTime // FindAllInFolderという名前のカスタムコマンドを作成します。このコマンドはfolderToSearchとwaitTimeという2つのパラメータを取ります
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
パラメータ:なし、またはスイートのフルパス、またはdefault suite directory内に位置するスイートの名前。
戻り値:スイート情報のプロパティリスト。 例:
(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")
挙動:スイートに関する次の情報を返します。
- Name:スイートの名前。
- Path:スイートのフルパス。
- ScriptsFolder:スクリプトフォルダのパス。
- ImagesFolder:画像フォルダのパス。
- ResultsFolder:結果フォルダのパス。
- Version:Eggplant Functionalスイートのバージョン番号(通常はそのスイートを作成したEggplant Functionalのバージョン)。
- Description:スイートのSettingsタブに入力されたスイートの説明。