【UiPath】要素が現れるまでループさせるワークフロー【非活性化ボタン対策】

RPA

とっちゃん@nyanco! です。

特定の要素が現れるまで永遠にループさせるワークフローの作り方の備忘録です。

今回は1回しかクリックできない(非活性化する)ボタン対策編です。

スポンサーリンク

ワークフローがタイムエラーで止まる

無料で使えるWindows用のRPAソフト「UiPath」で作成したweb巡回ワークフローで、どうしても良く止まってしまう箇所がありまして。

・通信が遅い、または途絶えた
・webサーバー側の反応が遅い

上記が原因でタイムエラーになる場合、アクティビティ【要素の有無を検出】などを使えばうまく動くケースが多いのですが、今回はダメでした。

ワークフローはこんな感じです。

Step 1. ボタンをクリック

Step 2. 【要素の有無を検出】→現れない[False]→Step 1.へ

現れた[True]


Step 3. 次のステップ

アクティビティ【要素の有無を検出】で要素が現れない場合、アクティビティ【フロー条件分岐】でもう一度 Step 1. に戻るように設計してるのに、なぜかボタンがクリックされない??

なぜだなぜだ〜と色々試行錯誤してみた結果。

Step 1. のボタンが、一度クリックすると反応しなくなる(非活性化する)仕様だと分かりました。

一回しかクリックできないボタンは【ブラウザーを更新】で対策

そこで考えたのが、アクティビティ【ブラウザーを更新】を挟む作戦です。

Step 1. ボタンをクリック

Step 2. 【要素の有無を検出】→現れない[False]→【ブラウザーを更新】→Step 1.

現れた[True]

Step 3. 次のステップ

上記の、ようにアクティビティ【ブラウザーを更新】を挟むと、ページが再度読み込まれてボタンが再度クリックできるようになり、要素が現れるまで一連の動作を繰り返すので、タイムエラーにならず上手く動くようになりました!

掲示板や申し込みフォームの場合、【ブラウザーを更新】が上手く機能しない可能性があります。

ワークフロー完成図

完成したワークフローはこちら。

以下、概要です。

Step 1.

・アクティビティ【ブラウザーにアタッチ】
対象のブラウザーにアタッチします。

・アクティビティ【クリック】
ボタンをクリックします。

Step 2.

・アクティビティ【要素の有無を検出】
ボタンをクリックすると現れるはずの要素の有無を検出します。
検出結果を格納する変数を作成・指定しておきます。

アクティビティ【フロー条件分岐】
変数
の内容によって分岐させます。

要素が現れなかった [False] → 【ブラウザーを更新】挟んで Step 1. に戻る
要素が現れた [True] → Step 3.
要素が現れるまで永遠にここでループするようになります。

Step 3.

次のアクションを設定していきます。

おわりに

もっとスマートなやり方があるかも知れませんが、かなり安定して動くようになったので筆者的には満足です。

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント