はじめに
本記事では、UiPathを使ってブラウザー操作を自動化した際に発生するエラーの原因、確認ポイントまたは解決策について書いていきます。
よく発生するエラー
1. ブラウザーと通信できません。UiPath 拡張機能をご確認ください
英語メッセージ : Cannot communicate with the browser, please check the UiPath extension.
原因
ブラウザーを開く
またはアプリケーション/ブラウザーを使用
アクティビティでブラウザーを起動したがUiPathブラウザー拡張機能の準備が出来ておらずタイムアウトとなった場合に発生します。
確認ポイント
A. エラーが毎回発生する場合
ブラウザー拡張機能のインストールが正しく行われていない可能性があります。下記を確認いただき、いずれかに該当する場合は、弊社公式ドキュメントのトラブルシューティングをご確認ください。
- ご利用になるブラウザー用のUiPath拡張機能はインストールされていますか?
- ブラウザーが起動している状態でタスクマネージャーを開いたとき、
ChromeNativeMessaging.exe
というプロセスを見つけることが出来ますか? -
ComSpec
という環境変数は定義されていますか?
B. エラーが出たり出なかったりする場合
ロボット実行端末のスペックが低い等の理由でブラウザー起動時の初期化処理が間に合わずタイムアウトしている可能性があります。下記のいずれかでエラーが解消するか確認ください。
- UiPath 拡張機能以外の拡張機能を無効にする
- (URの場合)
ブラウザーを開く
アクティビティの前に待機
アクティビティを配置する - (モダンデザインの場合)
アプリケーション/ブラウザーを使用
アクティビティのタイムアウトプロパティの値を30秒より大きくする。デフォルトタイムアウト値は30秒です - (クラシックデザインの場合)
UiPath.UIAutomation.Activities
アクテビティパッケージをアップグレードする
下記バージョン以降、ブラウザーを開く
アクティビティのデフォルトタイムアウト値が 20秒から60秒に延伸されています。
また、UIPATH_OPEN_BROWSER_TIMEOUT_SECONDS
環境変数によりタイムアウト値を変更出来るようになりました。
ご利用バージョン | アップグレードバージョン |
---|---|
v23.4.x | v23.4.4 以上 |
v22.10.x | v22.10.8 以上 |
v22.4.x | v22.4.10 以上 |
v21.10.x | v21.10.8 以上 |
v20.10.x | v20.10.13 以上 |
2. このセレクターに対応する UI 要素が見つかりませんでした
英語メッセージ : Could not find the UI element corresponding to this selector.
原因
エラーメッセージの通りとなりますが、指定されているセレクターに対応するUI要素を特定することができずタイムアウトとなった場合に発生します。
解決策
UI要素を特定できない理由は様々です。下記いずれかで解決するか確認ください。
A. セレクターにidx
やtitle
等、実行毎に値が変わる属性が指定されている
- 動的に変わる属性の値をワイルドカードまたは変数に置き換える
- 動的に変わる属性をセレクターから外して、UI要素が一意に特定できるようにアンカーを設定する
B. 操作対象のUI要素は特定の条件下でのみ表示される
-
要素が出現したとき
やアプリのステートを確認
アクティビティ等を使用して操作対象が表示されたときのみ該当アクティビティを実行するようにする
C. ロボット実行端末のスペックが低くてブラウザーの画面描画が遅い
- 該当アクティビティのプロパティ
準備完了まで待機
にINTERACTIVE
またはCOMPLETE
を指定する - それでも解決しない場合は、解決策Bと同様
要素が出現したとき
やアプリのステートを確認
アクティビティ等を使用して操作対象のUI要素が表示されてことを確認したのち該当アクティビティが実行されるようにする
下記弊社公式ブログのWaitForReadyの項が参考になります。
3. この UI 要素は有効ではありません
英語メッセージ : UiElement is no longer valid.
原因
要素を探す
アクティビティ等からUiPath.Core.UiElement
型の参照を取得後に画面遷移等によりブラウザ画面構成要素が更新されている状態で、保持しているUiPath.Core.UiElement
型の参照を利用してクリック等の操作を行うと発生します。
解決策
UiPath.Core.UiElement
型の参照を再度取得しなおしてから利用してください。
4. UI ノードが無効です
原因
ブラウザーを起動した時点では存在していたUI要素がブラウザーまたはタブが閉じてしまったため通信が出来ない、ロボット実行端末のスペックが低い、一時的な後負荷状況等の理由で該当UI要素からの応答を受け取ることができない等、何らかの理由によりUI要素を特定することが出来ない場合に発生します。
確認ポイント
-
スクリーンショットを作成
アクティビティを使用して、エラー発生時に該当UIの操作時にブラウザーまたはタブが閉じていないことを確認ください -
要素の存在を確認
アクティビティを該当アクティビティの前に配置して操作対象が表示されたときのみ該当アクティビティを実行するようにする -
UiPath.UIAutomation.Activities
のバージョンをv23.4.4
以上にアップグレードすることで事象が改善するか確認ください。このバージョンより、内部通信タイムアウト値が5秒から30秒に延伸されているため救済される可能性があります
5. 画面の範囲外にある UI 要素には入力を送信できません
英語メッセージ : Cannot send input to UI element because it is outside of screen bounds.
原因
入力メソッドにハードウェアイベント
を利用している状況下で、操作対象のUI要素が何らかの理由により画面表示範囲内に表示されていないためクリック等の操作に失敗しています。
入力メソッドについての詳細は、弊社ドキュメントをご確認ください。また、UiPath 2021、2022 MVPである@miya_gisさんがとてもわかりやすく纏めてくださっているので是非ご確認ください。
解決策
- 対象アクティビティの入力メソッドをバックグラウンド実行可能なものに変更してください。 モダンアクティビティの場合は、
Chromium API
またはシミュレート
、クラシックアクティビティの場合はシミュレート
がおすすめです。 - その他、ワークフロー開発端末と実行端末の画面解像度及び表示スケールを揃えることで本事象が発生しなくなる可能性もあります。
おわりに
皆様のUiPathでの開発に少しでもお役に立てれば幸いです。本記事で取り扱っていないエラー原因やその他エラーについて情報をお持ちの方がいらっしゃれば是非コメントください。