「Internet Explorerは動作を停止しました」発生時の対処法

現在本番運用しているワークフローにて、ブラウザのオートメーションを行っています。
ブラウザから頻繁に「Internet Explorerは動作を停止しました」というメッセージか出現するのですが、
この場合、UiPathがエラーを検知できず(タイムアウトにもならない)
延々と待機状態を続けてしまいます。
オートメーション中のどこで発生するかはランダムです。
このメッセージの出現を検知し、エラーフローに流したいのですが、それも叶わない状態です。
対処方法をご存知の方がいらっしゃいましたら、ご教示ください。

よろしくお願いいたします。

リトライスコープの「操作」の中にオートメーションしたい操作を丸ごと入れ、その冒頭に「要素の有無を検出」アクティビティで「Internet Explorerは動作を停止しました」のポップアップを検知し、有る場合は「プログラムの終了」ボタンをクリックする分岐処理を入れます。

なお、「Internet Explorerは動作を停止しました」のセレクタのセレクターは、

<wnd app='werfault.exe' cls='#32770' title='Internet Explorer' /> <wnd aaname='Internet Explorer' cls='DirectUIHWND' />

「プログラムの終了」ボタンのセレクターは

<wnd app='werfault.exe' cls='#*' title='Internet Explorer' /> <wnd aaname='Internet Explorer' cls='DirectUIHWND' /> <wnd aaname='プログラムの終了*' cls='Button' />

で取得できるはずです。

さらに、上記処理後、動作停止前までのIEの状態をクリアニングするためにIEの強制終了をすることをお勧めします。「プロセスの強制終了」アクティビティでもできますが、実行環境によっては「アクセスが拒否されました」のエラーが出てしまうため私はWindowsコマンド

taskkill / F / IM iexplore.exe / T

をバッチファイルにして(メモ帳などにはりつけ「KillProcessIE.bat」などと命名して保存)、それを「プロセスを開始」アクティビティで呼んでいます。 そうするとIE強制終了が安定しました。

まとめると、

  • リトライスコープ

    • 操作
      • 「Internet Explorerは動作を停止しました」の検知分岐処理
      • IEの強制終了
      • 元々オートメーションしたかった処理

の階層関係になると思います。

2 Likes

こんにちは

記載の内容ですと、そもそもこの状態になったときにUiPathがExceptionを吐かないように見えるので、RetryScopeやTry Catchでの捕捉が困難なように思えます。

どのような頻度で発生するか不明ですが、基本的には異常終了の発生を抑制する対策を行った方が良いかと思います。例えば定期的にIEのプロセスを終了→再立ち上げする等で緩和できないか等の検討です。
もしどうしても発生時の事後対応が必要であれば、例えばParallelアクティビティを用いて、一つのレーンで通常処理、もう一つのレーンで異常終了ダイアログの検出ロジック→検出したら再実行のようなことは可能かと思います。(ただどこで発生するかもわからないとのことで、仕掛レコードの対応等考えると結構大変なケースもあり得るかと思います。)

2 Likes

大変遅くなってしまいましたが、ご回答いただきありがとうございました。
試行錯誤した結果、Yoishiさんに提示いただいた方法で回避できました。

大変助かりました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.