#FeatureBlog - 20.4 UI Automation Next

はじめに

はじめまして!

UiPath K.K. で QA を担当している藤田と申します。

この記事では、先日 Community Edition でプレビューが公開された、「UI Automation Next」をご紹介します。

UI Automation Next は、名前の通り、従来の UI Automation パッケージに含まれるアクテビティ(「クリック」や「文字を入力」など)を発展させたものです。
具体的にどこが違うのかというと、 UI Automation Next では、

  • No-code なデザイン体験の強化: ユーザーがアクティビティのセレクターを編集しなくてもよい
  • より信頼できるセレクター: 既存の複数の技術(通常のセレクター、アンカー、画像など)を組み合わせることで、ロボットが UI 要素を認識する精度を上げる

という二点を目指しています。

業務を自動化する際、状況によって操作対象のセレクターが変化するというのはよくある話です。
たとえば、事前の操作によって UI 要素の属性が変化する、操作対象のファイルに実行時の日付が入っている、などといったケースです。

多少セレクターの変化があっても安定的に動作するワークフローを作るには、どうすればいいか?
悩んだ経験のある方は多いのではないでしょうか。ワイルドカードを使用してみたり、属性をオンオフしてみたり、というような工夫はどうしても必要でした。

そういった苦労を「いい感じ」に解決してくれるのが UI Automation Next です。
早速中身を見ていきましょう。

インストール

UI Automation Next のアクティビティパッケージは、 UiPath Studio 20.4 以上で利用可能となっています。

StudioX のプロファイルで新規プロジェクトを作成すると、デフォルトで UiPath.UIAutomationNext.Activities パッケージがインストールされています。

Studio で使用する場合は、パッケージマネージャの「プレリリースを含む」にチェックを入れ、オフィシャルフィードからダウンロードしてください。

この記事では、従来の UI Automation との違いを分かりやすくするため、 Studio での使用を前提に解説していきます。

課題

「メモ帳」アプリケーションで開いているファイルに文字列を書き込むだけの、ごく簡単なワークフローを考えます。

ワークフローの作成前に、まずは同様の操作を手動で行ってみます。

すると、私の環境では、テキストファイルに文字を入力した際、「メモ帳」ウィンドウのタイトルが変化することが分かりました。
「* ファイル名 - メモ帳」のように、ファイル名の前に、変更があったことを示すアスタリスク(小さな米印)マークがつきます。変更を保存すると、このマークは表示されなくなります。

uianext_1

この変化をうまく吸収できるようなワークフローを作る必要があります。

UI Automation で自動化してみる

比較のため、最初に従来の UI Automation で自動化を行ってみます。

あらかじめ新しいテキストファイルを作成し、「メモ帳」でテキストファイルを開いておきます。
このウィンドウに対し、「文字を入力」アクティビティを使用して、適当な文字列を入力します。
内容を追記していきたいので、「フィールド内を削除」プロパティはFalseに設定します。

uianext_2

ワークフローが作成できたら、早速実行してみましょう。

一回目はうまくいきました。文字が入力されたことで、ウィンドウのタイトルが変化しています。

uianext_3

さて、もう一度実行してみると……、今度はセレクターに対応するUI要素が見つからず、失敗してしまいました。

ここで、「セレクターを編集」メニューから、「文字を入力」アクティビティのセレクタープロパティを確認してみると、以下のようになっています。

<wnd app='notepad.exe' cls='Notepad' title='sample.txt - メモ帳' />
<wnd aaname='テキスト エディター' cls='Edit' />
<ctrl name='テキスト エディター' role='editable text' />

title属性が、編集を行う前の、「*」マークがつく前の状態にしか対応していないので、UI要素を発見することができなかったのです。

これを解決するために、ワイルドカードを用いてtitle属性を編集してみましょう。以下のように書き換えます。

<wnd app='notepad.exe' cls='Notepad' title='* - メモ帳' />

ワイルドカードと、メモ帳のウィンドウタイトルに付加される文字列がともに「*(アスタリスク)」なのが若干ややこしいですが、ワイルドカードを用いたことにより、このtitle属性は「 - メモ帳」で終わる任意の文字列に一致するようになります。

この状態でもう一度実行してみると……

uianext_5

今度は無事に入力することができました。一度ファイルを上書き保存して、タイトルの「*」がない状態で実行しても成功するはずです。

UI Automation Next で自動化してみる

次に UI Automation Next を用いて、同じ操作を自動化します。

上述の通り、 従来の UI Automation を用いて自動化を行うためには、多少の苦労(セレクターの編集)が必要でした。

UI Automation Next ではどうでしょうか。見ていきましょう。

UI Automation Next 版の「文字を入力」をワークフロー上にドラッグアンドドロップします。
すると、「文字を入力」アクティビティが「アプリケーション/ブラウザーを使用」アクティビティに内包された形で配置されます。

「アプリケーションを指定」からメモ帳のウィンドウを指定します。(操作対象となるテキストファイルの内容は事前にすべて削除し、上書き保存してあります)

「文字を入力」の「画面上でターゲットを指定」から、「メモ帳」の入力領域を選択し、適当な文字列を入力します。
内容の追記を行うため、「フィールド内を削除」プロパティはNoneに設定します。

最終的に、ワークフローは下図のような形になります。

ここまでできたら、ワークフローを何度か繰り返し実行してみます。
従来の UI Automation による自動化では、セレクターを編集しない場合、二回目の実行で失敗していました。しかし……

uianext_10

今回は、繰り返し実行しても問題なく入力が行えています。

UI Automation Next のセレクターを見てみる

UI Automation Next 版「文字を入力」は、どのようにUI要素を識別しているのでしょうか。中身をのぞいてみることにします。

アクティビティの「ターゲットを編集」メニューを選択します。
選択領域を表す緑色のオーバーレイの上にマウスをホバーさせると、「設定」メニュ(歯車のアイコン)が現れるので、クリックします。

uianext_11

下図の通り詳細が表示され、「セレクター」、「あいまいセレクター」、「画像」の三つの方法でターゲットとなるUI要素を探していることが分かります。

uianext_12

詳細なロジックについて説明しようとすると長くなるので、ここでは割愛しますが、UI Automation Next では、既存の複数の技術を組み合わせることで、ロボットがUI要素を「見つける」精度を高めているのです。
(「画像」が真っ白になっていますが、これは「メモ帳」の入力領域の背景が白色だからですね)

そのため、メモ帳のウィンドウタイトルに多少の変化があっても、「臨機応変」に対象の UI 要素を識別することができるわけです。

まとめ

このように、UI Automation Next では少ない作業で信頼性の高い、あるいは変化に強いセレクターを作成することができ、それによってワークフローをデザインする際のストレスや手間が軽減されています。

実際の業務では、ここで紹介したよりももっと複雑な操作を行うことでしょう。

ステップ数が多くなればなるほど、 No-code で信頼性の高いセレクターを作成できることの効果は大きくなってくるのではないかと思います。

「インストール」のセクションでご紹介した通り、プレビュー版が利用可能です。興味のある方はぜひ、試してみてください!

8 Likes