【UiPath】モダンデザインのイチ押し・・・「要素の存在を確認」に対応するアクティビティ

### はじめに
本記事は、2023年7月開催の「UiPathブログ 発信チャレンジサマー」の20日目のブログです。
ブログの詳細、参加方法については以下のブログを参照ください。
https://note.com/shumpei_w/n/nd082bdf28853
このブログ情報は、2023/7/20 時点の情報です。
UiPathはCommunity Edition、Versionは2023.6.1を使用しています。

---

UiPath・モダンデザインアクティビティ、後から出てきたのだから「いいに決まっている」と思いながら、なかなか移行できない・・・という方も多いのではないでしょうか。

そこで、モダンデザインアクティビティのイチ押しアクティビティを紹介したいと思います。

紹介したいのは、
#### 「アプリのステートを確認」アクティビティ
です。

---
画面遷移や、メニューボタンをクリックした後の挙動（入力欄の出現など）の確認の際に

クラシックデザインでは、以下のようなアクティビティをよく使われているのではないでしょうか。

　・「要素の存在を確認」アクティビティ、その後に「If」で条件分岐
　・「要素が出現したとき」アクティビティ
　・「要素が消滅したとき」アクティビティ
　・「要素の消滅を待つ」アクティビティ

モダンデザインでは、以上のアクティビティを下記の **たった１つのアクティビティ** で実装か可能となります。
それが、
#### 「アプリのステートを確認」アクティビティ
です。

アクティビティパネルの検索欄から「ステート」を検索すると表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/2f4f864f-a907-8852-1ea4-5b74a2f3eafa.png)
![ステート.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/9cc676c2-17de-72f2-fbd3-6e153e6e0bbb.png)

---
#### どんなシーンで使用できるか

例としては以下のような場面で実装が可能です。

　・ 画面遷移の確認（出現・消滅）
　・ クリック後の挙動確認
　　（画面遷移、画面消滅、メニューの表示、入力枠の出現など）
　・ ネットの調子が悪く、なかなか画面が表示されないとき
　・ アプリのログイン画面表示など、スタンバイが安定しないとき　などなど・・・

---
### 【使い方】
#### １．対象の要素を指定する（クラシック：要素の存在を確認）
まず、「画面上でターゲットを指定」をクリックし、対象の要素を指定する
例）対象の要素はUiPath Demo画面「経費一覧」が表示されたかどうかの実装の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/1ea6bccb-edba-41d0-bb34-af676ac29c2c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/1584463f-867b-75e6-4ad9-1496503c2749.png)

#### ２．「出現する要素」か「消滅する要素」を選択する
※例としては「出現する要素」を選択します

#### ３．タイムアウト指定秒数を指定する

　　秒数指定：90 秒　　
　　とすると・・・90秒でタイムアウトする設定になります。

※この設定は、１で指定した対象の画面要素が表示されるまで最大90秒間待機するという設定になります。
この場合、90秒以内の５秒で要素が表示されれば、最短５秒で画面遷移の確認ができることになります。

---
#### 待機時間：クラシックの場合は・・・
この例のような画面遷移の確認の場合、クラシックデザインで最短時間で確認処理をするよう実装するには下記のような手法で実装していたのではないでしょうか。

　① プロパティで実行前後に待機時間を設定する
　② Delayアクティビティを設置する
　③ Retryアクティビティを利用して２秒間隔に５回リトライする

特に①②の場合は、
「安定させるために”５秒”くらいDelayを入れておこう」
とすると、必ず５秒待機することになりますので、**最低５秒間待機** しなければならず、
また、**５秒以上かかった場合には対応できない** ことになります。
さらに、 待機処理を多数追加してしまうと、**待機時間は積算される** ことになります。

---


#### ４．「分岐の切り替え」でそれぞれ処理を追加する（クラシック：If）
対象の要素が確認（出現・消滅）できた（Then）場合、「成功メッセージログ」を出力したり、
その後の必須処理（次のボタンをクリックする）を追加する。

また、対象の要素の確認（出現・消滅）ができなかった（Else）場合は、「失敗メッセージログ」を出力したり、次の処理に影響がある場合は、Throwアクティビティを追加して処理を中断させることもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/b8784d67-0712-9fd8-cb0c-28d747adb0ca.png)

---

ここで、**「アプリのステートを確認」アクティビティ** の使い方のポイントを説明します。

### ★ポイント1・・・「出現」か「消滅」か
　２で「出現する要素」を選択し
　３で60 秒のタイムアウトを設定すると・・・

#### 　　最大60 秒間　画面やメニュー等が　「出現するまで待つ」

　という設定になります

　２で「消滅する要素」を選択し
　３で60 秒のタイムアウトを設定すれば・・・

#### 　　最大60 秒間　画面やメニュー等が　「消滅するまで待つ」

　という設定になります

### ★ポイント2・・・タイムアウト設定時間
　「出現」や「消滅」ともにタイムアウトの設定なので、
　指定した時間内に「出現」「消滅」が確認できれば、そこで次の処理に進むので、
　
　対象のタイムアウト想定時間内に「出現」すれば、
　処理時間としては **最短時間で処理できる** ことになります。

　また、「消滅」の設定についても、タイムアウト想定時間内に「消滅」できれば、
　最短時間で処理できます。

### ★ポイント3・・・「分岐を切り替え」
　アクティビティ内の「分岐の切り替え」についても、条件分岐（If）と同様の処理が可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3046355/9a00edfb-f902-82be-be65-990c24a956fb.png)

※例のように２で「出現する要素」の場合、下記のような条件分岐（If）として処理できます。

→ **Then**：「ターゲットが出現」
　※対象の画面遷移が確認できた・・・「画面遷移 成功」

→ **Else**：「ターゲットが出現しない」
　※対象の画面遷移の確認ができなかった・・・「画面遷移 失敗」


#### まとめ
UiPath v2020.10以降、UiPathはモダンデザインアクティビティを推奨していますが、
モダンデザインに移行するのは、アクティビティ名が違うものもあるので、始めはなかなか面倒な感じがしますが、UiPathは本当に人にやさしく作られています。
モダンデザインを使用しながら、クラシックデザインアクティビティのメニューも使うことができますし、とても効率的で有効かと思います。
これで、開発工数も短縮できるかも！です。
これからも、安定稼働するロボット開発を目指して頑張りましょう！！