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

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