Omega13を使用したエラー復旧
Omega13
は、Eggplant Functional内でプリロードされたスクリプトで、テスト中のシステムでランダムに発生するイベント(通知ダイアログや広告ポップアップウィンドウなど)が「画像が見つかりません」の例外を引き起こした場合の復旧を試みるために使用できます。Omega13
は、例外が最初に発生したのと同じステップでスクリプトの実行を自動的に再開しようとする点で、Try...Catchブロックとは異なります。Omega13
を使用するには、attemptRecoveryスクリプト(以下で説明)を書き、スクリプト内でOmega13
を有効にします。
Eggplant Functional自体内でOmega13
を使用するための完全な指示も表示できます。スクリプトからOmega13
を実行し、指示は実行ウィンドウに表示されます。
Omega13
の動作の簡単な説明については、以下のビデオをご覧ください:
Omega13を使用するタイミング
テストを書く際、よくポップアップや他の画像を覆い隠す要素がテストのどの時点で現れるかを知っていることがあります。これらのシナリオでは、if... then... elseまたはtry… catch... end tryステートメントが適切な選択肢かもしれません。しかし、邪魔な要素がいつ現れてEggplant Functionalの画像検索を妨げるかわからないことがあります。この種のシナリオでは、Omega13
が役立ちます。
作動方法
Omega13
はEggplant Functionalに組み込まれたスクリプトであり、追加のインストールは必要ありません。しかし、Omega13
がそ の役割を果たすためには、エラーハンドリング中に実行するattemptRecoveryスクリプトまたはhandlerを書く必要があります。これは、Omega13
を使用するテストからアクセス可能でなければなりません。
Omega13
をトリガーするためには、画像更新をオフに設定する必要があります。これを行うには、Run > Image Updateに移動し、**Throw Exception (Update Off)**を選択します。
Omega13の使用方法
Eggplant FunctionalにOmega13
を使用したいと伝えるためには、テスト内でOmega13
を使用開始したい位置を示すStart Using
コマンドと、通常の操作に戻りたい位置を示すStop Using
コマンドを使用します。これらのコマンドは、スクリプト全体をブックエンドにするか、特定の問題領域を示すことが できます。
Start using Omega13
openWebPage
RunWithNewResults "scrollThroughList"
RunWithNewResults "opentheLastItem"
closeWebPage
Stop using Omega13
テストの途中でランダムなイベントによりスクリプト内の画像が隠れてしまった場合、Omega13
は"Image Not Found"例外をキャッチし、イベントから回復するために設計した特別なスクリプトであるattemptRecoveryを呼び出します。
attemptRecoveryの一部はReturn "yes"またはReturn "no"で、これはattemptRecovery自体が成功したかどうかをOmega13
に示します。Omega13
が"yes"を受け取ると、以前に例外を発生させた画像を再度探します。画像が2回目の試行で見つかると、元のテストスクリプトの実行が続行されます。
attemptRecoveryスクリプト
あなたのattemptRecoveryスクリプトは、Omega13
を呼び出しているスクリプトのスイート内に位置し、"attemptRecovery"と呼ばれる必要があります。
あなたのattemptRecoveryスクリプトには、テスト対象のシステムでスクリプトの実行に障害が発生する可能性があるすべての状況を考慮したエラーハンドリングコードを含めるべきです。そうすれば、Omega13
がスクリプトの実行中に呼び出され、問題が発生した場合、attemptRecoveryスクリプトがOmega13
によって呼び出され、エラーハンドリングコードが実行されます。
すべてのattemptRecoveryスクリプトは、スクリプトの最後にReturn
コマンドを含め、"yes"または"no"の値をOmega13
に返して、回復試行の成功または失敗を示す必要があります。Omega13
が"yes"の戻り値を受け取ると、スクリプトの失敗箇所から実行を続けます。
Returnコマンドはスクリプトの最後に配置する必要があります。それは、現在のハンドラの実行を終了させるからです。
例:
"TestButtonFeature"という名前のOmega13
を使用したスクリプト:
start using omega13
WaitFor 8.0, "Feature_with_buttons"
If ImageFound("Feature_with_buttons")
log "success"
end if
stop using omega13
"TestButtonFeature"スクリプトと同じスイートに配置された関連する"attemptRecovery"スクリプト:
If ImageFound("DiscardChangesPrompt_1")
click "DiscardChangesPrompt_1"
return yes -- ポップアップを解除できました
Else
return no -- どのように対処すべきかわからない別の問題でした
End If
AttemptRecoveryは、Omega13
を呼び出すスクリプトのハンドラとしても含めることができます。その場合、スクリプトは次のようになります:
to attemptRecovery given theException, theCommand, theParams
If ImageFound("DiscardChangesPrompt_1")
click "DiscardChangesPrompt_1"
return yes -- ポップアップを解除できました
Else
return no -- どのように対処すべきかわからない別の問題でした
End If
end attemptRecovery
attemptRecoveryに渡されるパラメータ
Omega13
があなたのattemptRecoveryスクリプトを呼び出すとき、attemptRecoveryは3つのパラメータを受け取ります:
- 元のコマンドを試みた際に発生した例外;
- コマンドまたは関数の名前;
- そのコマンドまたは関数に渡されたパラメータのリスト
これらの渡されたパラメータにアクセスするためには、attemptRecoveryスクリプト内で変数を宣言することができます。params declaration
を使用して変数を宣言するか、以下に示すようにハンドラ宣言と一緒にインラインで宣言することができます:
to attemptRecovery given theException, theCommand, theParams
log theException -- 呼び出しスクリプトで発生した元の例外を記録します
log theCommand -- エラーが発生したコマンドを記録します
log theParams -- 失敗したコマンドに渡されたパラメータを記録します
If ImageFound("DiscardChangesPrompt_1")
click "DiscardChangesPrompt_1"
return yes -- ポップアップを解除できました
Else
return no -- どのように対処すべきかわからない別の問題でした
End If
end attemptRecovery