QTPs リカバリ シナリオ マネージャを使用して、再生同期タイムアウトを 0 に設定するとします。ハンドラは、「次のステートメントで続行」を返します。
次の再生ステートメントが、失敗する前に次の存在しない/一致しないステップを待つ時間を無駄にしないようにするために、これを行います。
10 個のコントロールが欠落している場合、それらの (連続した) 再生ステップが失敗する前に 10 のタイムアウト待機を生成するとします。再生タイムアウトが 30 秒の場合、10x30 秒 = 5 分の実行時間が失われますが、1 回 30 秒待機するだけで十分です (アプリはもう変更されないため、既に完全なタイムアウト期間を待っていました)。
100 個のテスト ケース (= アクションの反復) がある場合、これが 100 回発生する可能性があり、テスト実行時間ウィンドウの 500 分が無駄になります。
そのため、最初の失敗した再生ステップの後/時にタイムアウトを 0 に設定する回復シナリオ関数のアイデアを思いつきました。これにより、正しく失敗したステップをスキップしながら速度が加速されますが、次の一致する GUI コンテキスト (PASSED ステップを作成する) を識別する精度/信頼性が損なわれることはありません。
もちろん、次に渡された再生ステップで、元のタイムアウト値を復元したいと思います。どうすればそれができますか?これは私の質問です。
PASSED ステップに対して呼び出される回復シナリオ関数を定義することはできません。
現在、Reporter.ReportEvent にメソッド関数を設定し、そこにある PASSED ログ エントリを「スニッフィング」することを考えています。そのメソッド関数を、タイムアウトを 0 に設定するシナリオ リカバリ関数にインストールします。次に、「スニファー」関数が、次の再生ステップのいずれかで PASSED ステータスの ReportEvent 呼び出しを感知すると、すべてをリセットします (つまり、元のタイムアウト、およびメソッド機能をアンインストールします)。(ただし、.Click メソッドと .Set メソッドは ReportEvent を呼び出して結果のステータスを書き込むことはないと 99% 確信しています。したがって、このオプションはおそらく機能しない可能性があります。)
より良いアイデア?これは本当に私を悩ませます。