工事中です

Share on facebook
Share on twitter
Share on linkedin

Uipath Chromeを閉じる時、強制終了してはいけないのか?

Kill Processで一括終了していいのか議論

一括終了の略は「Kill Process」。少し恐ろしいネーミングがされていますね。もしも、Google ChromeをKill Processしたらどうなるのでしょうか? 何かしら、悪影響があるのでしうか? 少し不安が残るところです。

なぜ、すべてのChromeを閉じたいのかにもよる。

Google Chromeのタブをすべて閉じたい理由は人それぞれあると思います。もちろん、共通して言えるのは、ロボットの動作前後に余計なChomeをすべて閉じておきたいから。

しかし、中には「Chromeはメモリをよく食うから、バックグラウンドも含めて強制終了しないと気がすまない」という人もいます。

Chromeを強制終了して再起動すると、一時的にUiPathの拡張機能が動かなくなることもあります。

個人的な意見になりますが、強制終了した後、Chromeの拡張機能が一時的に正常に動作しないケースがあります。多発するわけではないので、原因はよくわかっていません。ケースとしては稀です。原因はUiPathの拡張機能に原因があるのではなく、どうやらChrome側の拡張機能に問題があるようです。

https://forum.uipath.com/t/how-to-close-all-chrome-browsers-before-stopping-robot/14979/8

実装するアクティビティ

ブラウザーが残っているかを確認して、もしも残っていたらウィンドウを閉じる…これを繰り返していけばいいだけですね。

と思っていたら、まだやらなければいけないことが多く残っています。

例外処理 > 「ウィンドウを閉じる」を遮る厄介者がいたら処理をする

普通にウィンドウを閉じることができれば、「ウィンドウを閉じる」を繰り返すだけでいいんですが、実際には様々な障壁があります。

事前に予測されるポップアップを削除しておきましょう。

Google Chromeのポップアップ

以下の画面のようなポップアップがもしも残っていた場合、何度ウィンドウを閉じるを繰り返してもウィンドウを閉じることができないため、無限ループに陥ってしまいます。

この「ページを離れる」はUiPathのセレクターで掴むことができません。 (以下を参照)

どれも、Send Hot Key 「Enter」キーで処理することが可能です。

じゃ、もしも名前を付けて保存が表示されていたら閉じて、ポップアップが表示されていたら閉じて……。みたいなのはすごく面倒です。なので、Enterキーを押して処理を中断させましょう。

ちなみに、最後にウィンドウをすべて閉じ終わった場合、ウィンドウそのものが存在しない状態でホットキーを押下し、エラーが発生します。なので、プロパティの共通「エラー発生時に実行を継続」をTrueにしておきましょう。

「名前を付けて保存」→ 無視でOK

名前をつけて保存ウィンドウが立ち上がっている状態でアクティビティ「ウィンドウを閉じる」があると、エラーが発生するのではないか?と思われがちです。

しかし、上記が立ち上がっていたとしても問題なくウィンドウを閉じることができるので、実装する必要はありません。

何かしらの無限ループを抑えるために

この処理は何かしらの無限ループに陥る可能性がありますので、エラーハンドリングを行います。

[end_time]を超過したかを条件分岐に入れ、超過した場合はスローを行います。

仮にすべてのChromeを閉じれなかったとしても、後続処理を止めるほどの深刻なエラーではないので、最スローは行いません。「メッセージをログ」アクティビティでレベルはWarnにしておきましょう。これで、エラーが発生したとしても、特に問題なく書を後続することができます。

実際のワークフローがこちら

Try CatchのCatch部分が途切れておりますか、ご了承ください。

以上。

目次