UiPath Studio

UiPath Studio ガイド

UI 操作の自動化

場合によっては、通常使用する手動のルーチンが自動化には最適ではないことがあります。特定のアプローチに決める前に、アプリケーション自体の動作と UiPath の統合/機能を慎重に確認してください。

重要!

[並列 (Parallel)] アクティビティと [UI Automation] アクティビティの併用はサポートされていません。これらを併用すると、しばしば予期せぬ結果を招くことがあります。

デスクトップ オートメーション

UI Automation は、ロボットとアプリケーションが同一のマシンで実行される場合に、最大限に活用することができます。これは、UiPath がアプリケーションに搭載されているテクノロジーと直接統合されることで、要素の特定、イベントのトリガー、データの取得をバックグラウンドで実行できるためです。

入力メソッド

UiPath がアプリケーション上で [クリック] または [入力] アクティビティを実行する方法は 3 つあります。これらは、UI 操作の自動化を扱うすべてのアクティビティのプロパティとして表示されます。

[入力をシミュレート] および [クリックをシミュレート] プロパティ

[入力をシミュレート] または [クリックをシミュレート] プロパティを選択した場合、Studio はアプリケーションに接続し、示された UI 要素 (ボタン、テキスト ボックスなど) のイベント ハンドラーをトリガーします。結果は、Web ブラウザーやビジネス アプリケーションなどのターゲット テクノロジーに常に依存します。

次のようなアクティビティに [入力をシミュレート][クリックをシミュレート] を有効化した場合、実行前にターゲット UI 要素の状態を確認することをお勧めします。

また、以下のアクティビティでも [入力をシミュレート] または [クリックをシミュレート] プロパティが既定で有効になっており変更できないため、同様の確認をお勧めします。

[無効な場合でも動作を実行] プロパティ

このプロパティは、対象となるアクティビティが、無効化された要素と対話するかどうかを設定します。このプロパティは、SimulateType または SimulateClick が有効な場合にのみ考慮されることに注意してください。AlterIfDisabled プロパティは、以下のアクティビティが備えています。

SendWindowMessages プロパティ

[ウィンドウメッセージを送信 (SendWindowMessages)] プロパティを選択した場合、Studio はアプリケーションのメッセージ ループにイベント詳細をポストし、アプリケーションのウィンドウ プロシージャが内部でこれをターゲットの UI 要素にディスパッチします。

上記のいずれのオプションも選択しなかった場合、Studio はハードウェア イベントのシグナルをシステムに送り、オペレーティング システムからターゲット要素に向けて詳細をディスパッチさせます。

これらの方法は、上記の順序で試す必要があります。これは、[クリックをシミュレート] プロパティと [ウィンドウ メッセージを送信] プロパティは高速、かつ、バックグラウンドでも動作しますが、アプリケーションに搭載されているテクノロジーに左右されることが多いためです。

Studio は人間同様の操作 (マウスのポイントを動かす、特定の場所をクリックするなど) を実行するため、ハードウェア イベントは 100% 動作します。ただし、この場合、自動化の対象となっているアプリケーションが画面に表示されている必要があります。これは、ユーザーが自動化の妨げになるリスクがあるため、デメリットと見なされることもあります。

セレクター

自動的に生成されたセレクターから要素を特定するために提示された属性値が不安定な場合があります。こうした場合には、手動で処置を行い、セレクターを調整する必要があります。信頼できるセレクターであれば、開発、試験、本番といった環境の違いやアプリケーションにログインしたユーザー名にかかわらず、あらゆる状況で常に同じ要素を正しく特定します。

[セレクターエディター (Selector Editor)] または [UI Explorer] でセレクターを改善する場合、次のヒントを参考にしてください。

  • 不安定な値を持つ属性を、安定していて意味のある値を持つ属性に置き換える。
  • 属性値の可変部分をワイルドカード (*) に置き換える。
  • 属性の値がすべてワイルドカードになっている場合 (例: name=’*’)、そうした属性は削除する。
  • 属性の編集が有効でない場合、中間コンテナーの追加を試みる。
  • 値が 1 または 2 など非常に小さい場合を除き、idx 属性の使用を避ける。

上記のセレクターでは、ページ タイトルに、セレクターが記録された日付への参照が含まれており、一部の属性がランダムに見える ID を含んでいることがわかります。属性を調整すれば、UiPath レコーダーが提示するものよりも優れたセレクターが得られます。

コンテナー

ファイル パスと同様に、セレクターは完全パスまたは部分 (相対) パスで表すことができます。完全セレクターは、ウィンドウまたは HTML 識別子で始まり、デスクトップ全体で要素を特定するために必要な情報をすべて備えていますが、部分セレクターは、要素が属するトップレベルのウィンドウを指定するアタッチ/コンテナー アクティビティ内でのみ機能します。

  • [ブラウザーを開く (OpenBrowser)]
  • [アプリケーションを開く (OpenApplication)]
  • [ブラウザーにアタッチ (AttachBrowser)]
  • [ウィンドウにアタッチ (AttachWindow)]

詳しくは、完全セレクターと部分セレクターを参照してください。

完全セレクターではなく、部分セレクターを持つコンテナーを使用することには、いくつかのメリットがあります。

  • 同じアプリケーションで動作するアクティビティを視覚的にグループ化する。
  • トップのウィンドウを毎回探す必要がないため、速度が若干向上する。
  • 手動更新が必要な場合に、トップレベルのセレクターを管理しやすい。
  • 同じアプリケーションの異なる 2 つのインスタンスを操作する場合には必須となる。

画像オートメーション

画面上の UI 要素を特定するセレクターやキーボード ショートカットなどが機能しない場合に最終手段として使用するのが、画像認識です。画像マッチングでは、要素が画面上で完全に表示されている必要があります。また、開発中と実行時とで、表示されている詳細がすべて同じでなければなりません。このため、画像オートメーションを利用する場合には、プロセスの信頼性を確保するように細心の注意を払います。画像の選択範囲が必要以上に多すぎても少なすぎても、画像が見つからなかったり、誤検出が発生しやすくなります。

解像度に関する考慮事項

画像マッチングは、デスクトップテーマや画面解像度など、環境の違いに左右されやすいものです。Citrix でアプリケーションを実行する場合、ワークフローをレコーディングした時と同等、またはそれよりも高い解像度を維持する必要があります。もしくは、キャプチャされた画像の精度を若干下げることにより、小さな画像のゆがみを補正できます。特に、相対位置でのクリックやスクレイピングなど、座標ベースの手法を使用する場合には、様々な解像度に応じてどのようにアプリケーション レイアウトが調整され、視覚要素の近接性が確保されるかご確認ください。

オートメーションが様々な解像度をサポートする場合、[分岐 (PickBranch)] アクティビティ内部に並列してレコーディングを配置することでロボットがいずれか一致するものを使用できます。

OCR エンジン

OCR がアプリケーションに対して良好な結果を返している場合、環境による影響を最小限にとどめるための代替手段として、テキスト オートメーションを利用するとよいでしょう。Google Tesseract エンジンは比較的小さな領域に有効であり、Microsoft MODI は比較的大きな領域に適しています。

ループ オートメーションで MODI エンジンを使用すると、メモリ リークが発生することがあります。このため、MODI によるスクレイピングは、[分離 (Isolated)] プロパティを使用して、別のワークフローから呼び出すことを推奨します。

UI 同期

アプリケーションの状態がワークフローの想定とは異なる場合、予期しない動作が発生する恐れがあります。まず、アプリケーションがロボットの操作に応答するまでの時間を確認しましょう。

[待機 (ミリ秒) (DelayMS)] プロパティにより、アプリケーションが応答するまでしばらく待機することができます。ただし、プロセス内の特定の手順を進める前に、アプリケーションの状態を検証することが必要になる場合があります。対策として、他のインタラクションの前に、アプリケーションの状態が望ましいものになるまで待機するアクティビティを追加するなどがあります。こうした状況で有効なアクティビティは、次のとおりです。

バックグラウンド オートメーション

オートメーションが人間とデスクトップを共有することを想定している場合、すべての UI 操作をバックグラウンドに実装する必要があります。これは、オートメーションが UI 要素オブジェクトと直接やりとりをする必要があることを意味します。こうすることで、プロセス中にアプリケーション ウィンドウを非表示にするか、または最小化することが可能になります。

5 か月前に更新


UI 操作の自動化


改善の提案は、API 参照ページでは制限されています

改善を提案できるのは Markdown の本文コンテンツのみであり、API 仕様に行うことはできません。