とっちゃん@nyanco! です。
特定の要素が現れるまで永遠にループさせるワークフローの作り方の備忘録です。
今回は1回しかクリックできない(非活性化する)ボタン対策編です。
ワークフローがタイムエラーで止まる
無料で使えるWindows用のRPAソフト「UiPath」で作成したweb巡回ワークフローで、どうしても良く止まってしまう箇所がありまして。
・通信が遅い、または途絶えた
・webサーバー側の反応が遅い
上記が原因でタイムエラーになる場合、アクティビティ【要素の有無を検出】などを使えばうまく動くケースが多いのですが、今回はダメでした。
ワークフローはこんな感じです。
↓
Step 2. 【要素の有無を検出】→現れない[False]→Step 1.へ
↓
現れた[True]
↓
Step 3. 次のステップ
アクティビティ【要素の有無を検出】で要素が現れない場合、アクティビティ【フロー条件分岐】でもう一度 Step 1. に戻るように設計してるのに、なぜかボタンがクリックされない??
なぜだなぜだ〜と色々試行錯誤してみた結果。
Step 1. のボタンが、一度クリックすると反応しなくなる(非活性化する)仕様だと分かりました。
一回しかクリックできないボタンは【ブラウザーを更新】で対策
そこで考えたのが、アクティビティ【ブラウザーを更新】を挟む作戦です。
↓
Step 2. 【要素の有無を検出】→現れない[False]→【ブラウザーを更新】→Step 1.へ
↓
現れた[True]
↓
Step 3. 次のステップ
上記の、ようにアクティビティ【ブラウザーを更新】を挟むと、ページが再度読み込まれてボタンが再度クリックできるようになり、要素が現れるまで一連の動作を繰り返すので、タイムエラーにならず上手く動くようになりました!
ワークフロー完成図
完成したワークフローはこちら。
以下、概要です。
Step 1.
・アクティビティ【ブラウザーにアタッチ】
対象のブラウザーにアタッチします。
・アクティビティ【クリック】
ボタンをクリックします。
Step 2.
・アクティビティ【要素の有無を検出】
ボタンをクリックすると現れるはずの要素の有無を検出します。
検出結果を格納する変数を作成・指定しておきます。
・アクティビティ【フロー条件分岐】
変数の内容によって分岐させます。
要素が現れた [True] → Step 3. へ
Step 3.
次のアクションを設定していきます。
おわりに
もっとスマートなやり方があるかも知れませんが、かなり安定して動くようになったので筆者的には満足です。
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント