【UiPath】固定時間はもう使わない!賢いWebブラウザの読み込み待機はこれだ!
さて、皆さんはページ遷移後やポップアップの表示など、後続処理が滑らないように待機させるようにプログラムを組むかと思いますが、その際はどのアクティビティを使われますか?
もちろん場合によりけりのため、これからお伝えするやり方はあくまでも一つのアイデアとして受け取っていただければと思います。
一般的な待機方法
まず、よく使われる方法としては、以下の3つがあるかと思います。
①「待機(Delay)」アクティビティ
「クリック」アクティビティなどで画面遷移後に置いて、指定した時間(固定)で待機することができます。
②「クリック」アクティビティなどのプロパテ内で指定
ここでは「クリック」アクティビティを一例に、"実行後の待機時間"内でも指定できますね。
③「要素を探す」アクティビティ
"アクティブ化を待つ"や"表示されるまで待つ"にチェックを入れたりして、指定した要素(セレクタで指定した場所)の状態で判断して待機。
もしくは、"準備完了まで待機"で以下の3つのうちを選択して待機することもできます。
-NONE
-INTEACTIVE
-COMPLETE
①②に比べるとかなり使い勝手の良いアクティビティのため、現場でもよく使われます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以上3つがよく使われるやり方ですが、実際これだけでは不十分です。
特にWebブラウザ上では、接続環境に左右されてしまいます。
例えば、①「待機(Delay)」アクティビティについては、指定した時間内でブラウザの読み込みが完了しなければ後続処理は滑り、エラーが起きます。
『じゃあ時間を延ばせばいいじゃないか!』と思われがちですが、それでは処理全体の時間がかかりすぎて、RPAの目的でもある時間効率化が破綻してしまいます。
②「クリック」アクティビティなどのプロパテ内で指定についても同様ですね。
『じゃあ結局どうすればいいの?』
そこで使うのは③「要素を探す」アクティビティです。
ただしこのまま使うのではなく、もう一つのアクティビティと組み合わせて使います。
それが「属性を待つ」アクティビティです。
実際に使い方を見てみましょう。
「属性を待つ」の使い方
①「要素を探す」アクティビティで指定
まずは待機したいブラウザのページ(画面遷移後)を「要素を探す」アクティビティで指定します。
今回は以下のサイトを使用します。
想定としては、サイトの立ち上げ後に、ページ上部にある[フィード]や[見つける]を押す、とします。
💡「要素を探す」アクティビティで指定する際はページ全体を指定しましょう。
②「要素を探す」アクティビティのセレクタを編集
ページ全体を指定するとUiExplorerには下記のようなセレクタが表示されますので、UiExplorerの右側で"aastate"にチェックをし保存を押します。
※上記画面のようにaastateが表示されない場合は指定した箇所が違うか、そのページの構成上、aastateが設定されていないことが考えられますので今回はこのやり方では解決しません。
ただし、後者のパターンはあまり無いように思いますので、指定する場所を変えて試みてください。
③「要素を探す」アクティビティに変数を作成
次に「要素を探す」アクティビティの"出力"にUiElement変数を作成します。
変数名:uieWebページ/型:UiPath.Core.UiElement
変数名についてはあくまでもサンプル用に作ったものになりますので、個人で見やすい名前や現場のルールに沿った名前にしましょう。
④「属性を待つ」アクティビティの編集
続けて「属性を待つ」アクティビティの設定を以下の通りに行います。
属性:aastate
属性値:フォーカスできます。
要素:uieWebページ
※画面左側のアクティビティカード内でも、"属性"と"属性値(値)"は同様に編集を行えます。
ちなみに、今回取得した属性"aastate"の属性値には、下記の3つが存在します。
-サイズを変更できます。
-移動できます。
-フォーカスできます。
今回はWebページ上の操作ができる状態にしたいので、3つ目の「フォーカスできます。」を④の属性値に記入します。
⑤「属性を待つ」アクティビティのその他設定
最後に、「属性を待つ」アクティビティの"タイムアウト"などの設定も行うとより速く処理が進むので状況に応じた時間を指定することをおすすめします👌
以上!いかがだったでしょうか?
今回ご紹介した方法はあくまでも一例となります。
が、実際の現場でも役立つやり方ですので、是非一度お試しください!
最後までご拝読いただきありがとうございました。