システム操作の自動化をUiPathで行なっている時にエラーや確認メッセージなどが出てくることがあります。毎回出てくるのであれば一連のフローの中にメッセージの処理を組み込めばいいですが、出てくる場合とそうでない場合がある時にはメッセージが有無を識別することでその後の動作を分岐させることでエラーが生じなくなります。
##要素の有無を検出(Element Exists)アクティビティを使う
要素の有無を検出アクティビティではセレクターで指定した要素があるかどうかを判別し、選択した要素があればTrue、なければFalseを返り値として返します。
この返り値はプロパティの要素の有無に設定したBoolean型の変数に返ります。
##条件分岐アクティビティでTrue/Falseのフローを分ける
条件分岐アクティビティを使って設定したBoolean型の変数(Exists)がTrueかどうかを条件式に設定し、その後のフローを分岐させます。
例えばメッセージがある場合にはウィンドウを閉じる等のアクションを入れることで、変則的にメッセージが発生する場合にUI要素が認識できずにエラーになってします自体を防ぐことができます。
##使用例
商品を登録しようとした際に商品の価格が承認されていない場合に下の画像のようなメッセージが表示されると仮定します。(このメッセージはUipathの別のプロジェクトでメッセージボックスアクティビティを使って表示させています)
例えばこの後の商品登録の一連のシステム設定をプロジェクトで組んでいたとしても、価格承認がされていないことでこの後の設定に進めなければUIを認識できずに、タイムアウトでエラーになってしまいます。
そこでこのメッセージが出て来た場合をそうでない場合で動作を分けるために、要素の有無を検出(Element Exists)アクティビティ
と条件分岐アクティビティ
を使用していきます。
まず要素の有無を検出ではターゲットとしてウィンドウ内のテキストをセレクターとして指定します。また、出力変数にはBoolean型のExistを設定します。


メッセージが表示された場合には変数ExistにTrueが、ない場合にはFalseが返るため、下記のような条件式を設定し、その後の動作を分けてあげることでメッセージが表示された際にもエラーが生じなくなります。

以上、要素の有無を検出アクティビティと条件分岐アクティビティを組み合わせて変則的なメッセージの表示に対応する方法でした。