オブジェクト、メッセージ、および結果のグローバルプロパティ
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}
setoption
と setoptions
はグローバルおよびローカルプロパティの使用に特化しているため、これらのコマンドのコマンド構文でプロパティ名から 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 assertionFailCount
、the assertionErrorCount
、the assertionWarningCount
、the 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 | 例外が発生したスクリプト内の位置のテキスト説明 |
callStack | callStack()関数によって返された、例外が発生した点までの呼び |
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を同じスイートの別のスクリプトに設定します