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

オブジェクト、メッセージ、および結果のグローバルプロパティ

SenseTalkには、スクリプト環境がオブジェクト、メッセージ、特定のコマンドまたは関数の結果をどのように扱うかを影響させるために使用できる多数のグローバルプロパティが含まれています。SenseTalkがメッセージをどのように扱うかを理解していると便利です:

閉じるローカルおよびグローバルプロパティ値の設定または変更

SenseTalkの Set または Put コマンドでグローバルプロパティ値を設定できます。これらのプロパティのいずれかを参照するときは、普通の変数と区別するためにプロパティ名の前に the を使用しなければならないことに注意してください。

例:

set the searchrectangle to [1,2,2,3]
put 2 into the remoteworkinterval

以下のようにしてグローバルプロパティ内の特定の名前付きプロパティを追加または変更できます:

set the namedColors.pink to color("RGB,1.0,0.5,0.5") -- namedColors グローバルプロパティにピンクを追加し、そのRGB色値を定義します
set the listFormat's separator to " & " -- listFormat グローバルプロパティのseparator プロパティを設定します

プロパティは setoption または setoptions コマンドを使用して設定または更新することもできます。setoption コマンドでは単一のプロパティを更新でき、setoptions コマンドでは複数のプロパティを更新できます。

例:

setoption searchrectangle, [1,2,2,3]
setoptions {searchrectangle: [1,2,2,3], scriptlogging: yes}
ノート

setoptionsetoptions はグローバルおよびローカルプロパティの使用に特化しているため、これらのコマンドのコマンド構文でプロパティ名から the を省略します。

ローカルおよびグローバルプロパティの操作についての追加情報については、SenseTalkのローカルおよびグローバルプロパティを参照してください。

The AssertionBehavior グローバルプロパティ

値: Exception, Warning, Error, Pause

デフォルト: Exception

動作: assert コマンドがステートメントを偽と評価した場合の assert コマンドの動作を設定します。

例:

set the AssertionBehavior to "warning" -- アサートコマンドが与えられた条件を偽と評価した場合にスクリプトが失敗しないように、アサーションのデフォルトの動作を例外から警告に変更します
assert that x < 10 -- AssertionBehavior グローバルプロパティが以前に設定されたため、xの値が10未満でない場合に警告メッセージを記録します

The AssertionsEnabled グローバルプロパティ

値: True, False

デフォルト: True

動作: False に設定されている場合、assert コマンドは無視されて実行されません。

例:

set the assertionsEnabled to false
assert imagefound("MyImage") -- このコマンドは実行されません

The AssertionPassCount, The AssertionFailCount, The AssertionErrorCount, The AssertionWarningCount, および The AssertionExceptionCount グローバルプロパティ

値: 整数

デフォルト: 0

動作: assertコマンドが条件を成功と評価すると、the assertionPassCountが1増加します。 assertコマンドが失敗すると、the assertionFailCountthe assertionErrorCountthe assertionWarningCountthe assertionExceptionCountのいずれかが増加することがあります。

例:

この例では、assertコマンドを使用して単純な文を評価することにより、assertionPassCountが増加します。

put the assertionPassCount -- 他のassertコマンドが実行されていないので0を出力
put 7 into x
assert x < 10 -- Trueと評価される
put the assertionPassCount -- assertコマンドの肯定的な評価のためにこのカウンターが増加したので1を出力

この少し複雑なバージョンの例は、the assertionBehaviorを変更することで、assertコマンドが失敗した場合に例外をスローするのではなく、警告をログに記録するため、the assertionFailCountが失敗後にアクセス可能になる方法を示しています。

set the assertionbehavior to warning -- アサーションが失敗してもスクリプトは失敗しない
put the assertionPassCount -- 他のassertコマンドが実行されていないので0を出力
put 7 into x
assert x < 10 -- Trueと評価される
Assert x > 10 -- Falseと評価される
assert x = 10 -- これもFalse
put the assertionPassCount -- assertコマンドの肯定的な評価のためにこのカウンターが増加したので1を出力
put the assertionFailCount -- 多くのassertコマンドが失敗したため、このカウンターが2回増加したので2を出力

The ThrowExceptionResults グローバルプロパティ

値: True, False

デフォルト: True

動作: このプロパティは、コマンド操作がエラーを結果として例外をスローするかどうかを決定します。 the throwExceptionResults グローバルプロパティが True に設定されている場合、コマンドや関数が result 関数を例外オブジェクトに設定するたび(ほとんどのエラー条件で発生します)、その例外はスローされ、この関数を通じてメッセージとして利用可能になります。

例:

set the throwExceptionResults to false

例:

set the throwExceptionResults to false
put url "http://someinvalidURL.com" into PageContents
log the result -- Logs 'Error 404 in HTTPStatus: Server returned status code 404'
log "Performed URL GET."

例:

set the throwExceptionResults to false
set myProcessPath to "bad/process/path"
open process myProcessPath-- プロセス起動パスが無効なため失敗しますが、エラーは発生しません
set myResult to result() -- 結果を変数に格納します
put myResult
if myResult contains "launch path ("&myProcessPath&") not valid" then
LogWarning myResult -- Logs 'STProcessException: NSTask - launch path (bad/process/path) not valid'
end if

The BreakpointsEnabled グローバルプロパティ

値: True, False

デフォルト: True

動作: このプロパティは、スクリプト内に設定されたブレークポイントが有効になるかどうかを決定します。 breakpointコマンドを使用してスクリプトの制御をデバッガーに移すブレークポイントを設定できます。 実行中にブレークポイントを無効にするには、このプロパティを False に設定します。

例:

set the breakpointsEnabled to false

例:

#Calling Script
LoginWorkflow true -- スクリプトLoginWorkflowを呼び出し、パラメータ値"true"をスクリプトに渡します

#LoginWorkflowスクリプト
params isTestRun -- スクリプトが1つのパラメータ値を受け取るようにパラメータ化します
if isTestRun is true -- パラメータ値 "true"がスクリプトに渡されたかどうかを確認します
set the BreakpointsEnabled to false -- isTestRunの値がtrueの場合、ブレークポイントは無効になります
end if
Click "Login"
breakpoint -- BreakpointsEnabledグローバルプロパティがtrueに設定されている場合、スクリプトを一時停止します
Click "AccountDetails"

関連:

The Exception グローバルプロパティ

値: 空、またはtryブロックによってキャッチされた例外を記述するプロパティリスト

デフォルト:

振る舞い: このプロパティは、最新のtryブロックのコンテキストでスローされた例外に関する情報を含みます。各try文の始まりで、the exceptionは空に設定されます。tryブロックで例外がスローされると、例外オブジェクトがthe exceptionに入れられます。その値はその後tryブロックのcatch部分、または次のtry文までの任意の時間で利用可能になります。

例外はオブジェクト(プロパティリスト)です。例外オブジェクトには、例外が単純にテキストとして描画された場合に簡単な説明を表示するテキスト値があります。しかし、それはまた、以下のプロパティの1つ以上を含む他の有用な情報も含んでいます:

名前例外名または識別子
reason例外の理由
location例外が発生したスクリプト内の位置のテキスト説明
callStackcallStack()関数によって返された、例外が発生した点までの呼び出しシーケンスに関する情報を提供するスタックフレームオブジェクトのリスト
scriptErrorエラーに関する具体的な情報を含むscriptErrorオブジェクト

the exceptionはグローバルプロパティ(コンテナー)であるため、スクリプトはいつでもその内容を変更することが自由です。これは例外がキャッチされたときに便利で、キャッチした例外を変更したり、例えば追加のプロパティを追加したりして、再度スローすることができます。

ノート

StandardFormat関数は、例外オブジェクトのすべてのプロパティを表示するために使用できます:

log the standardFormat of the exception
例:
{asText:@"行2での実行時エラー:イメージが見つかりません - waitforエラー - 画面上に \"UsernameField\" というイメージが5.00秒以内に見つかりません", CallStack:[{Handler:"globalpropertiesobjmessages", Line:2, MeObjectID:"C:/Users/Carrie/Documents/Examples3.suite/Scripts/globalpropertiesObjMessages.script<SELECTION>", MessageName:"on_globalpropertiesobjmessages", MessageType:"Command", objectType:"SenseTalkFrame", RepeatIndex:0, ScriptObjectID:"C:/Users/Carrie/Documents/Examples3.suite/Scripts/globalpropertiesObjMessages.script<SELECTION>", TryDepth:1}], Help@"追加のヘルプが必要な場合は、'Image Searching'のドキュメンテーションを参照してください", ImageName:"UsernameField", Location:"globalpropertiesobjmessagesの行2", LogImage:{CaptureDate:"2017-09-20 17:58:10 -0600", CaptureHost:"GalaxyS5", CaptureLocation:[198, 126], CaptureScreenSize:[@"1080", @"1920"], Description:"", HotSpot:[147, 36], ImageLocation:"", ImageName:"UsernameField", ImagePath:"C:/Users/Carrie/Documents/Examples3.suite/Images/UsernameField.png", ImageRectangle:"", ImageSize:[295, 72], ImageTolerance:57, Pulsing:False, Scale:1, SearchType:"Smooth"}, LogMessage:"5.00秒以内に画面上に \"UsernameField\" というイメージが見つからない", Name:"イメージが見つかりません", objectType:"exception", OtherButton:"ヘルプ...", OtherHelp:"ePF/using/epf-finding-images.htm", Reason:"waitforエラー - 画面上に \"UsernameField\" というイメージが5.00秒以内に見つからない", ScriptError:{AsText:"行2での実行時エラー:イメージが見つかりません - waitforエラー - 画面上に \"UsernameField\" というイメージが5.00秒以内に見つからない", ErrorType:"実行時エラー", Line:2, Name:"イメージが見つかりません", objectType:[@"ScriptError", @"exception"], Reason:"waitforエラー - 画面上に \"UsernameField\" というイメージが5.00秒以内に見つからない"}}

例:

例外を出力します

例:

例外の名前を出力します

例:

try
"Windows VM"に接続します
catch
例外のScriptErrorを出力します -- 接続コマンドが例外をスローした場合、'行2での実行時エラー:接続に失敗しました - サーバー:192.168.120.128のポート:5900に接続できません サーバーに連絡できません:192.168.120.128:5900 (10060:操作がタイムアウトしました)'
end try

例:

try
"UsernameField"を待つ5
catch
例外のキーをログに記録します -- WaitForコマンドが例外をスローした場合、ログには'(asText,CallStack,Location,LogMessage,Name,objectType,Reason,ScriptErro)'が記録されます。
end try

例:

try
"UsernameField"をクリックします
catch
例外の"ExceptionTime"を現在の時間に設定します
例外のExceptionTimeをログに記録します -- Clickコマンドが例外をスローした場合、例外がキャッチされた時刻をログに記録します。例:'07:01 PM'
end try

例:

try
"Invalid Access", "名前またはパスワードが間違っています"をスローします
catch
例外を出力します -- "行2での実行時エラー:無効なアクセス - 名前またはパスワードが間違っています"
例外の名前を出力します -- "無効なアクセス"
例外の理由を出力します -- "名前またはパスワードが間違っています"
end try

The FrontScripts グローバルプロパティ

値: 空、またはメッセージを処理するオブジェクトまたはオブジェクトのリスト(つまり、ライブラリまたはスクリプト)

デフォルト:

動作: このグローバルプロパティは、ターゲットオブジェクトがメッセージを提供される前に、メッセージを処理する機会を得るオブジェクトのリストを含むことができます。the FrontScriptsのオブジェクトはメッセージをインターセプトし、あまり望ましくないが時々メッセージをログに記録するなどのタスクに役立つ任意のオブジェクトの振る舞いを上書きする機会があります。

例:

the frontscriptsを"FileStuff"に設定します -- the frontScriptsを同じスイートの別のスクリプトに設定します

例:

the frontScriptsを("/Users/bkwins/Documents/ePFSuites/Suite17Helper.suite/Scripts/VerifyWikiSearch.script", "/Users/bkwins/Documents/ePFSuites/TableTesting.suite/Scripts/LiveScript.script")に設定します -- 2つの異なるスイートからスクリプトを使用するようにthe frontScriptsを設定します

関連:

The BackScripts グローバルプロパティ

値: 空、またはメッセージを処理するオブジェクトまたはオブジェクトのリスト(つまり、ライブラリまたはスクリプト)

デフォルト:

動作: このグローバルプロパティは、ターゲットオブジェクトがそれを処理しなかった場合、ターゲットオブジェクトの後でメッセージを処理する機会を得るオブジェクトのリストを含むことができます。したがって、オブジェクト(ライブラリまたはスクリプト)をthe BackScriptsに挿入することで、そのオブジェクトのハンドラが任意のスクリプトで使用可能になりますが、個々のスクリプトがthe BackScriptの振る舞いを上書きするための独自のハンドラを提供することが可能になります。

先端

SenseTalkにはthe backScriptsにオブジェクトを追加し削除するための2つの特別なコマンドがあります。start using <object>コマンドはスクリプトまたは他のオブジェクトをthe BackScriptsに挿入します。stop using <object>構文はあなたが以前にthe BackScriptsに挿入したライブラリやスクリプトを削除します。これらのコマンドはinsert <object> into the BackScriptsおよびremove <object> from the BackScriptsコマンドと同等ですが、少しシンプルで読みやすくなっています。

例:

the backScriptsを"/Users/bkwins/Documents/ePFSuites/Suite17Helper.suite/Scripts/Units.scripts"に設定します // the backScriptsを異なるスイートのスクリプトに設定します

例:

start using "Folder1/Helper1" -- Helper1(Folder1から)をthe backScriptsに追加します

関連:

The WatchForScriptChanges グローバルプロパティ

値: TrueFalse

デフォルト: False

動作: このプロパティは、SenseTalkがスクリプトハンドラのキャッシュコピーを使用するか、またはソースを最初に更新チェックするかを決定します。

メッセージがディスク上に存在するスクリプトオブジェクトに送信されると、SenseTalkはそのスクリプトファイルを読み込み、スクリプトをメモリにキャッシュします。そのオブジェクトが別のメッセージを受け取ると、SenseTalkはそのメッセージのハンドラがあるかどうかを素早く確認できます。一部の(かなり稀な)状況では、ランタイム中にSenseTalkにスクリプトの更新をチェックさせたい場合があります。これらの状況では、the watchForScriptChangesグローバルプロパティをTrueに設定して、オブジェクトがメッセージを受け取るたびにSenseTalkがファイルを更新チェックするようにします。ファイルが更新されていた場合、再度読み込まれ、新しいハンドラが使用されます。ハンドラの実行バージョンは、実行中は変更されません。

例:

the watchForScriptChangesをtrueに設定します

テックトーク

set the watchForScriptChanges to true
LoginのAddPassword -- Loginという名前のスクリプトに保存されたAddPasswordという名前のコマンドハンドラを呼び出します

The ResultHistoryグローバルプロパティ

値: 空、またはthe resultによって返された値のリスト。

デフォルト:

動作: このプロパティは、 the ResultHistoryLimitプロパティ値までの the resultによって返された値を格納します。空でない結果が設定されるたびに、それは the ResultHistoryに挿入されます。スクリプトで the ResultHistoryを使用して、以前のステートメントから結果値を取得することができます。ただし、空の値は含まれないので、結果を特定のステートメントにマッチさせる際には注意が必要です。

put the resultHistory

例:

RunWithNewResults "Login"
put the resultHistory -- 以下を表示します ' ((handler:"SmokeTestPrimaryScript", line:"1", result:(Duration:"0.05", Errors:"0", Exceptions:"0", LogFile:"C:/Users/Carrie/Documents/Examples3.suite/Results/Login/20170920_200213.795/LogFile.txt", ReturnValue:"", RunDate:"2017-09-20 20:02:13.795 -0600", Status:"Success", Successes:"1", Warnings:"0")))'

例:

RunWithNewResults "Login"
put the resultHistoryのhandler -- コマンドを呼び出したハンドラの名前を表示します。例: 'SmokeTestPrimaryScript'

例:

GetValue -- GetValueという名前のスクリプトを呼び出し、値(例えば "1234")を返します
waitFor 8, "UsernameField" -- WaitForコマンドは、WaitForコマンドの実行にかかった時間(durationメッセージ)を返します
log the resultHistory -- 最後に実行したコマンドのコマンドメッセージをログに記録します。たとえば: '((handler:"globalpropertiesobjmessages", line:"1", result:"12213213"),(handler:"globalpropertiesobjmessages", line:"2", result:"1.856 seconds"))'

The ResultHistoryLimitグローバルプロパティ

値: 数値

デフォルト: 100

動作: このプロパティは、the ResultHistoryグローバルプロパティに格納できる結果の最大数を設定します。

テックトーク

set the resultHistoryLimit to 25

例:

set the resultHistoryLimit to 5 -- 最も新しい5つの結果だけを格納することを許可します。
repeat 10 times
WaitFor 10, "UsernameField"
end repeat
put the resultHistory into myHistory -- 実行したWaitForコマンドの最も新しい5つの結果を格納します。たとえば: '((handler:"timings", line:"3", result:"2.141 seconds"),(handler:"timings", line:"3", result:"1.838 seconds"),(handler:"timings", line:"3", result:"1.067 seconds"),(handler:"timings", line:"3", result:"1.031 seconds"),(handler:"timings", line:"3", result:"1.075 seconds"))'

// 各結果を反復処理し、その期間(waitFor結果の結果)をリストに格納します
repeat with each myResult of myHistory
insert myResultのresult after Durations
end repeat
log "The average duration of the last 5 waitFors is "&average(Durations) -- 最後の5つの期間の平均を見つけてログに記録します。例: 'The average duration of the last 5 waitFors is 1.5756 seconds'