Retry Scopeアクティビティの使い方について紹介します。
Retry Scopeは対象のアクションのあとに想定通りの結果がでるまで対象のアクションを繰り返すというものになります。
うまくつかえれば、エラーの回数を減らせて便利そうですが、むやみに使えるものでも無さそうな気もします。
まず、Activities>Available>Workflow>Control Flow>Retry Scopeを選択します。
プロパティのNumberOfRetrysには対象のアクションを繰り返したい回数を指定し、
RetryInterbalには想定通りの結果が得られなかった場合にもう一度繰り返すまでの時間を指定します。
デフォルトのままだと、5秒のインターバルで3回繰り返されます。
次にアクションを設定します。
例えば、Yahooのファイナンスボタンをクリックするアクションとします。
続いて、Conditionを設定します。
ここにはアクションの結果、どういう状況になっていればいいかというものをいれます。
入れられるアクティビティも限られており、見つけた限りでは
Activities>Available>UI Automation>Element>Find>Element Exists
Activities>Available>UI Automation>Text>Find>Text Exists
Activities>Available>UI Automation>OCR>Find>OCR Text Exists
Activities>Available>UI Automation>Image>Find>Image Exists
くらいです。(他にもあるんじゃないかな、とは思いますが。)
一旦例としてElement Existsを使います。
Element ExistsをConditionの中に入れます。そして、あって欲しいElementの情報を設定します。
今回は、ファイナンスを押した後の画面になっていてほしいのでYahoo!ファイナンス画面にある「株価検索」というElementがあるかどうかにします。
これで完成なので、実行してみると普通に処理が完了します。
ただもしファイナンスボタンを押しても正常に画面が遷移しなかった場合は3回繰り返されます。
今回は、3回繰り返すのを確認するため、以下のように、アクションの内容をファイナンスボタンでなくYahooのロゴを押す処理にしてみます。
すると、3回Yahooのロゴを押しにいき、最後は以下のようなエラーメッセージで処理が終了します。
エラーメッセージ:Action failed to execute as expected(アクションが期待通りに実行されなかった)
これでちゃんと3回の繰り返しが確認できました。
3回繰り返してだめだった場合でもエラーとしたくない場合は、Retry ScopeのContinueOnErrorにTrueと入力してください。
以上がRetry Scopeの使い方となります。
Conditionに設定できるアクティビティが限られているので、どんな場面でも使えるかというと微妙な気もしますが、アクションにTry CatchをいれてCatchの中で、エラーファイルを開いて、Conditionの中でエラーファイルが開かれていたら繰り返し…とかにしたら使えますかね。
類似の処理としてよければ以下もご参照ください。
【UiPath】タイミングが合わずに空振るときの対処方法