- リリース ノート
- 基本情報
- セットアップと構成
- オートメーション プロジェクト
- 依存関係
- ワークフローの種類
- 制御フロー
- ファイルの比較
- オートメーションのベスト プラクティス
- ワークフローのデザイン
- UI Automation
- プロジェクトの構成
- オートメーションのライフサイクル
- UI コンポーネントの再利用手法
- ソース管理との連携
- デバッグ
- ログ
- 診断ツール
- ワークフロー アナライザー
- ワークフロー アナライザーについて
- ST-DBP-002 - 多数の引数
- ST-DBP-003 - 空の catch ブロック
- ST-DBP-007 - 複数のフローチャートレイヤー
- ST-DPB-010 - [ワークフロー] または [テスト ケース] の複数のインスタンス
- ST-DBP-020 - 未定義の出力プロパティ
- ST-DBP-021 - ハードコードされたタイムアウト
- ST-DBP-023 - 空のワークフロー
- ST-DBP-024 - 永続性アクティビティの確認
- ST-DBP-025 - 変数のシリアル化の前提条件
- ST-DBP-026 - [待機] アクティビティの使用
- ST-DBP-027 - Persistence のベスト プラクティス
- ST-DBP-028 - 引数のシリアル化の前提条件
- 変数
- 引数
- インポートされた名前空間
- コード化されたオートメーション
- トリガーベースの有人オートメーション
- レコーディング
- UI 要素
- セレクター
- オブジェクト リポジトリ
- データ スクレイピング
- 画像とテキストの自動化
- Citrix テクノロジの自動化
- RDP の自動化
- VMware Horizon の自動化
- Salesforce の操作の自動化
- SAP のオートメーション
- macOS UI Automation
- ScreenScrapeJavaSupport ツール
- Webdriver プロトコル
- 拡張機能
- Test Suite - Studio
- トラブルシューティング
UI Automation
場合によっては、通常使用する手動のルーチンが自動化には最適ではないことがあります。特定のアプローチに決める前に、アプリケーション自体の動作と UiPath との連携/機能を慎重に確認してください。
UI 操作の自動化機能は、ロボットとアプリケーションが同一のマシンで実行される場合に、最大限に活用することができます。これは、UiPath がアプリケーションに搭載されているテクノロジと直接統合されることで、要素の特定、イベントのトリガー、データの取得をバックグラウンドで実行できるためです。
UiPath がアプリケーション上で [クリック] または [入力] アクティビティを実行するメソッドは 3 つあります。これらは、UI 操作の自動化を扱うすべてのアクティビティのプロパティとして表示されます。
[入力をシミュレート] および [クリックをシミュレート] プロパティ
[入力をシミュレート] または [クリックをシミュレート] プロパティを選択した場合、Studio はアプリケーションに接続し、示された UI 要素 (ボタン、テキスト ボックスなど) のイベント ハンドラーをトリガーします。結果は、Web ブラウザーやビジネス アプリケーションなどのターゲット テクノロジに常に依存します。
次のようなアクティビティに [入力をシミュレート] や [クリックをシミュレート] を有効化した場合、実行前にターゲット UI 要素のステートを確認することをお勧めします。
また、以下のアクティビティでも [入力をシミュレート] または [クリックをシミュレート] プロパティが既定で有効になっており変更できないため、同様の確認をお勧めします。
[無効な場合でも動作を実行] プロパティ
このプロパティは、対象となるアクティビティが、無効化された要素と対話するかどうかを設定します。このプロパティは、SimulateType または SimulateClick が有効な場合にのみ考慮されることに注意してください。AlterIfDisabled プロパティは、以下のアクティビティが備えています。
SendWindowMessages プロパティ
[ウィンドウ メッセージを送信] プロパティを選択した場合、Studio はアプリケーションのメッセージ ループにイベント詳細をポストし、アプリケーションのウィンドウ プロシージャが内部でこれをターゲットの UI 要素にディスパッチします。
上記のいずれのオプションも選択しなかった場合、Studio はハードウェア イベントのシグナルをシステムに送り、オペレーティング システムからターゲット要素に向けて詳細をディスパッチさせます。
これらのメソッドは、上記の順序で試す必要があります。これは、[クリックをシミュレート] プロパティと [ウィンドウ メッセージを送信] プロパティは高速、かつ、バックグラウンドでも動作しますが、アプリケーションに搭載されているテクノロジに左右されることが多いためです。
Studio は人間同様の操作 (マウスのポイントを動かす、特定の場所をクリックするなど) を実行するため、ハードウェア イベントは 100% 動作します。ただし、この場合、自動化の対象となっているアプリケーションが画面に表示されている必要があります。これは、ユーザーがオートメーションの妨げになるリスクがあるため、デメリットと見なされることもあります。
自動的に生成されたセレクターから要素を特定するために提示された属性値が不安定な場合があります。こうした場合には、手動で処置を行い、セレクターを調整する必要があります。信頼できるセレクターであれば、開発、試験、本番といった環境の違いやアプリケーションにログインしたユーザー名にかかわらず、あらゆる状況で常に同じ要素を正しく特定します。
セレクター エディターまたは UI Explorer でセレクターを改善する場合、次のヒントを参考にしてください。
- 不安定な値を持つ属性を、安定していて意味のある値を持つ属性に置き換える。
- 属性値の可変部分をワイルドカード (*) に置き換える。
- 属性の値がすべてワイルドカードになっている場合 (例:
name=’*’
)、そうした属性は削除する。 - 属性の編集が有効でない場合、中間コンテナーの追加を試みる。
-
値が 1 または 2 など非常に小さい場合を除き、
idx
属性の使用を避ける。
上記のセレクターでは、ページ タイトルに、セレクターが記録された日付への参照が含まれており、一部の属性がランダムに見える ID を含んでいることがわかります。属性を調整すれば、UiPath レコーダーが提示するものよりも優れたセレクターが得られます。
ファイル パスと同様に、セレクターはフル パスまたは部分 (相対) パスで表すことができます。完全セレクターは、ウィンドウまたは HTML 識別子で始まり、デスクトップ全体で要素を特定するために必要な情報をすべて備えていますが、部分セレクターは、要素が属するトップレベルのウィンドウを指定するアタッチ/コンテナー アクティビティ内でのみ機能します。
- ブラウザーを開く
- アプリケーションを開く
- ブラウザーにアタッチ
- ウィンドウにアタッチ
詳しくは、完全セレクターと部分セレクターをご覧ください。
完全セレクターではなく、部分セレクターを持つコンテナーを使用することには、いくつかのメリットがあります。
- 同じアプリケーションで動作するアクティビティを視覚的にグループ化する。
- トップのウィンドウを毎回探す必要がないため、速度が若干向上する。
- 手動更新が必要な場合に、トップレベルのセレクターを管理しやすい。
- 同じアプリケーションの異なる 2 つのインスタンスを操作する場合には必須となる。
画面上の UI 要素を特定するセレクターやキーボード ショートカットなどが機能しない場合に最終手段として使用するのが、画像認識です。画像マッチングでは、要素が画面上で完全に表示されている必要があります。また、開発中と実行時とで、表示されている詳細がすべて同じでなければなりません。このため、画像オートメーションを利用する場合には、プロセスの信頼性を確保するように細心の注意を払います。画像の選択範囲が必要以上に多すぎても少なすぎても、画像が見つからなかったり、誤検出が発生しやすくなります。
画像マッチングは、デスクトップ テーマや画面解像度など、環境の違いに左右されやすいものです。Citrix でアプリケーションを実行する場合、ワークフローを記録した時と同等、またはそれよりも高い解像度を維持する必要があります。もしくは、キャプチャされた画像の精度を若干下げることにより、小さな画像のゆがみを補正できます。特に、相対位置でのクリックやスクレイピングなど、座標ベースの手法を使用する場合には、さまざまな解像度に応じてどのようにアプリケーション レイアウトが調整され、視覚要素の近接性が確保されるかご確認ください。
オートメーションがさまざまな解像度をサポートする場合、[分岐] アクティビティ内部に並列してレコーディングを配置することでロボットがいずれか一致するものを使用できます。
アプリケーションのステートがワークフローの想定とは異なる場合、予期しない動作が発生する恐れがあります。まず、アプリケーションがロボットの操作に応答するまでの時間を確認しましょう。
[待機 (ミリ秒)] プロパティにより、アプリケーションが応答するまでしばらく待機することができます。ただし、プロセス内の特定の手順を進める前に、アプリケーションのステートを検証することが必要になる場合があります。対策として、他のインタラクションの前に、アプリケーションのステートが望ましいものになるまで待機するアクティビティを追加するなどがあります。こうした状況で有効なアクティビティは、次のとおりです。
オートメーションが人間とデスクトップを共有することを想定している場合、すべての UI 操作をバックグラウンドに実装する必要があります。これは、オートメーションが UI 要素オブジェクトと直接やりとりをする必要があることを意味します。こうすることで、プロセス中にアプリケーション ウィンドウを非表示にするか、または最小化することが可能になります。
- [クリック] および [文字を入力] アクティビティを介したナビゲーションとデータ入力については、[入力をシミュレート]、[クリックをシミュレート]、[ウィンドウ メッセージを送信] を使用します。
- バックグラウンドでのデータ入力については、[テキストを設定]、[チェック]、[項目を選択] アクティビティを使用します。
- [テキストを取得]、[フル テキストを取得]、WebScraping アクティビティは、バックグラウンドで実行して出力を取り出します。
- アプリケーションのステートを検証するには、[要素の存在を確認] アクティビティを使用します。
Chrome/Edge/Firefox ブラウザーを使用して Web オートメーションをピクチャ イン ピクチャ (PiP) モードの子セッションで実行し、メイン セッションでも引き続き同じブラウザーを使用する場合、Chrome と Edge の両方を、同じユーザー データ ディレクトリを使用して異なるセッションで同時に起動することはできませんので注意してください。
%LOCALAPPDATA%\Google\Chrome\User Data
です。ここにブラウザー プロファイル データが保存されます。また、新しく作成したブラウザー プロファイルごとに独自のスペース (移動履歴、ブックマーク、Cookie) があります。
chrome.exe --user-data-dir=c:\foo
コマンドでブラウザーを起動します。プロファイル データはすべて、このカスタム フォルダーに保存されます。
この制限を回避するために、モダンの [アプリケーション/ブラウザーを使用] アクティビティとクラシックの [ブラウザーを開く] アクティビティでは、すぐに使えるソリューションとして [ユーザー データ フォルダー モード] プロパティと [ユーザー データ フォルダー パス] プロパティが用意されています。これらのプロパティは、ブラウザーの起動時に、既定のフォルダー、アクティビティによって自動的に生成されたフォルダー、または後者のプロパティで指定されたカスタム フォルダーのいずれを使用するかをアクティビティに指示します。
これらのプロパティの機能について詳しく見てみましょう。
ケース 1
ユーザー データ フォルダーに関する詳細をすべて知る必要はなく、オートメーションでブラウザーを PiP で起動してジョブを実行し、メイン セッションで自身の作業を行えるようにしたいとします。その場合は [ユーザー データ フォルダー モード] を空のままにします。すると、[プロジェクト設定] の [アプリケーション/ブラウザー] セクションの既定値である「Automatic」が継承されます。ロボットは、PiP でオートメーションを実行するための一時データ フォルダー/プロファイルを自動的に作成します。
ケース 2
既定のユーザー データ フォルダーに、既定のプロファイルに加えてすべてのビジネス アプリのログイン履歴と Cookie が含まれているため、このフォルダーを使用してオートメーションを PiP で実行したいとします。[ユーザー データ フォルダー モード] を [DefaultFolder] に設定します。この場合、PiP で実行したオートメーションが完了するか PiP のブラウザーが停止するまで、作業中のセッションでブラウザーを起動することはできませんのでご注意ください。
ケース 3
自分が何をしているかを把握していて、ブラウザーの制限と UiPath で提供される機能の両方について理解している場合は、[ユーザー データ フォルダー モード] を [CustomFolder] に設定し、[ユーザー データ フォルダー パス] を任意のパスに設定します。
上記のすべてのケースにおいて、グループ ポリシーごとに拡張機能をインストールすることをお勧めします。これにより、既定またはカスタムどちらのユーザー データ フォルダーに作成されているかに関係なく、すべてのブラウザー プロファイルで拡張機能が利用可能になり、アクティブ化されます。