エラーの原因

Try CatchのCatch中にexception.Messageでエラーの内容をログに残すようにしています。
エラーでこけた時、ログに残る内容として、「このセレクターに対応する UI 要素が見つかりません:(セレクタの内容)」
というのはよくあるパターンですが、
「この UI 要素は有効ではありません」や「一般的なエラーをクリックします。」
というログを残し、こけることがあります。

しかし、このエラーを開発環境で再現しようと実行しても同じエラーはなく最後まで走り切ります。
このエラーが出た場合でも、実行環境で何回か動かしているとエラーが出なくなったり、
エラーの箇所が毎回全然違うため、エラー原因がつかめないことが多いです。
(開発環境・実行環境共に、スリープ設定などで画面表示が消えないように設定しています。)

こちらが何を指すエラーなのかご存じの方はいらっしゃいますでしょうか。
開発環境では再現できないことから、同じ設定にしているつもりが、
少し実行環境と異なっている可能性もあります。
その場合、確認したほうがよい設定項目などあればご教示ください。

環境:OS Windows Server2012R2上にUiPathをインストールし、
インストールしたサーバにリモートデスクトップ接続して実行
UiPathバージョン:2018…4.3
(上記環境とバージョンは開発環境、実行環境共に同じです。)

こんにちは。

色々可能性があって絞り込み切るのは難しいかもしれませんが、
まずはエラーが発生した時の画面状況を確認してみるのはどうでしょう。

自分であればエラーハンドリングをしているロジック部分(Catchの中ですかね?)で、
PCデスクトップ画面のスクリーンショットを撮ってどこかに保存しておくことで、
エラーが発生した瞬間の画面状況を確認するところから始めていきますかね。
そこから、実は実行時の解像度が開発環境と実行環境で違った!とか
何か知らないポップアップが出てる!とかつかめることがあったりします。

とっかかり程度の回答ですみませんが、ご参考になれば。

この UI 要素は有効ではありません

こちらのエラーは話せない技術的詳細があるので、詳細を尋ねられても答えかねますが、もうすでに画面上にそのボタンがないことを意味します。
UiPathはセレクターを使いUiElement型のオブジェクトを生成します。
セレクターは「ボタンの探し方」を定義しているのに対して、UiElement型はそのボタン自身を示します。そのボタンがいなくなった場合(UiElement型が有効でなくなったとき)このエラーが発生します。
具体例としてはUiElementオブジェクトを生成し、ブラウザをリフレッシュし、その後クリックした場合このエラーが発生します。
再現用ワークフローを用意しました。
シーケンス.xaml (6.7 KB)
ブラウザをリフレッシュしなくても、アプリケーションが内部的にボタンをリフレッシュすることがあり、その時にも取得したボタンがなくなり、新しいボタンにとりかわっています。
また、何らかの形で有効ではないUiElement型が作成され、それを使おうとした場合もこのエラーが発生します。

実際のワークフローではUiElement作成とクリックアクティビティをわけていないと思いますが、
その場合でも内部的にUiElement型を生成しているのでこちらのエラーが発生します。

対処方法としては
この現象が発生する場合はリトライスコープの中にClickアクティビティを入れることで失敗した場合、繰り返せますのでこちらをおすすめします。

一般的なエラーをクリックします。

こちらのエラーはセレクターでボタンが見つかるし、UiElement型有効な場合に発生するエラーになります。一つの具体例としてはなぜかボタンがクリックが失敗した場合(UiPathの「準備完了まで待機」で待機状態を認識できないボタン、理由としてはアプリケーションのフリーズなどが考えられる)があります。
一般的なケースでの対処方法は上記同様リトライスコープがおすすめになります。

本スレッドはあくまでどのようなエラーかという質問ですが、
このスレッドを読んでいるご購入頂いているお客様については、
この問題がリトライスコープで解決できず、また再現性が高い再現手順があるのであればサポートチケットの作成をおすすめします。

2 Likes

お二方とも回答ありがとうございました。
大変参考になりました。

スクリーンショットはすでにロボット内に組み込んでいたのですが、リトライスコープは
まだ試していなかったので試してみます。