- 概要
 - UI Automation
- UI Automation を使用して自動化されるアプリケーションと技術
 - プロジェクトの対応 OS
 - UI-ANA-016 - [ブラウザーを開く] に使用されている URL を検出
 - UI-ANA-017 - [エラー発生時に実行を継続] の値が True
 - UI-ANA-018 - OCR/画像関連のアクティビティのリスト
 - UI-DBP-006 - コンテナーの使用
 - UI-DBP-013 - Excel の自動化方法の誤用
 - UI-DBP-030 - セレクター内での変数の使用禁止
 - UI-DBP-031 - アクティビティの検証
 - UI-PRR-001 - クリックをシミュレート
 - UI-PRR-002 - 入力をシミュレート
 - UI-PRR-003 - [アプリケーションを開く] の誤用
 - UI-PRR-004 - ハードコードされた待機時間
 - UI-REL-001 - セレクター内の大きいインデックス値
 - UI-SEC-004 - メール アドレスのデータを含むセレクター
 - UI-SEC-010 - アプリ/URL の制限
 - UI-USG-011 - 許可されていない属性
 - UX-SEC-010 - アプリ/URL の制限
 - UX-DBP-029 - セキュリティで保護されていないパスワードの使用
 - UI-PST-001 - [プロジェクト設定] の監査ログ レベル
 
- UiPath ブラウザー移行ツール
 - クリッピング領域
 - Computer Vision レコーダー
 - アクティビティの索引
 - アクティベート
 - アンカー ベース
 - ブラウザーにアタッチ
 - ウィンドウにアタッチ
 - ユーザー入力をブロック
 - 吹き出し
 - チェック
 - クリック
 - 画像をクリック
 - 画像クリック トリガー
 - OCR で検出したテキストをクリック
 - テキストをクリック
 - クリック トリガー
 - アプリケーションを閉じる
 - タブを閉じる
 - ウィンドウを閉じる
 - コンテキスト対応のアンカー
 - 選択されたテキストをコピー
 - 要素属性変更トリガー
 - 要素の存在を確認
 - 要素スコープ
 - 要素ステート変更トリガー
 - UI ツリーをエクスポート
 - 構造化データを抽出
 - 子要素を探す
 - 要素を探す
 - 画像を探す
 - 一致する画像を探す
 - OCR でテキスト位置を探す
 - 相対要素を探す
 - テキスト位置を探す
 - アクティブ ウィンドウを取得
 - 親要素を取得
 - 属性を取得
 - イベント情報を取得
 - クリップボードから取得
 - フル テキストを取得
 - OCR でテキストを取得
 - パスワードを取得
 - 位置を取得
 - ソース要素を取得
 - テキストを取得
 - 表示中のテキストを取得
 - 前に戻る
 - 次に進む
 - ホームに移動
 - Google Cloud Vision OCR
 - ウィンドウを隠す
 - 強調表示
 - ホットキー トリガー
 - ホバー
 - 画像上でホバー
 - OCR で検出したテキスト上でホバー
 - テキスト上でホバー
 - 画像の存在を確認
 - 画面上で指定
 - .NET コードを挿入
 - JS スクリプトを挿入
 - ActiveX メソッドを呼び出し
 - キー操作トリガー
 - 画像を読み込み
 - ウィンドウを最大化
 - Microsoft Azure ComputerVision OCR
 - Microsoft OCR
 - Microsoft Project Oxford Online OCR
 - ウィンドウを最小化
 - イベントを監視
 - マウス トリガー
 - ウィンドウを移動
 - URL に移動
 - OCR でテキストの存在を確認
 - 要素が出現したとき
 - 要素が消滅したとき
 - 画像が出現したとき
 - 画像が消滅したとき
 - アプリケーションを開く
 - ブラウザーを開く
 - ブラウザーを更新
 - ユーザー イベントを再生
 - ウィンドウを復元
 - 画像を保存
 - 項目を選択
 - 複数の項目を選択
 - ホットキーを押下
 - クリッピング領域を設定
 - フォーカスを設定
 - テキストを設定
 - クリップボードに設定
 - Web 属性を設定
 - ウィンドウを表示
 - プロセスを開始
 - システム トリガー
 - スクリーンショットを作成
 - Tesseract OCR
 - テキストの存在を確認
 - ツールチップ
 - 文字を入力
 - SecureString で文字を入力
 - フォアグラウンドを使用
 - 属性を待つ
 - 要素の消滅を待つ
 - 画像の消滅を待つ
 
- アプリケーション イベント トリガー
 - ユーザー入力をブロック
 - チェック/チェック解除
 - アプリのステートを確認
 - 要素を確認
 - クリック
 - クリック イベント トリガー
 - ドラッグ アンド ドロップ
 - 表データを抽出
 - 繰り返し (各 UI 要素)
 - ブラウザーのデータを取得
 - クリップボードを取得
 - テキストを取得
 - URL を取得
 - URL に移動
 - 強調表示
 - ホバー
 - JS スクリプトを挿入
 - キーボード ショートカット
 - キー押下イベント トリガー
 - マウス スクロール
 - ブラウザー内を移動
 - 項目を選択
 - ブラウザーのデータを設定
 - クリップボードに設定
 - ランタイム ブラウザーを設定
 - フォーカスを設定
 - テキストを設定
 - スクリーンショットを作成
 - 文字を入力
 - ユーザー入力のブロックを解除
 - アプリケーション/ブラウザーを使用
 - ウィンドウ操作
 
- UI Automation API を使用してブラウザー検索を実行し、結果を取得する
 - Web の閲覧
 - 画像を検索する
 - 画像をクリックする
 - イベントをトリガーおよび監視する
 - ファイルを作成して上書きする
 - HTML ページ: 情報を抽出して操作する
 - ウィンドウの操作
 - リスト項目の選択の自動化
 - ウィンドウ要素を探して操作する
 - テキスト操作の自動化を行う
 - 画像を読み込んで処理する
 - マウスでアクティブ化する操作を管理する
 - アプリケーションランタイムの操作を自動化する
 - ローカル アプリケーションの自動実行
 - ブラウザーのナビゲーション
 - Web オートメーション
 - トリガー スコープの例
 - DevExpress での UI Automation の有効化
 
 - Computer Vision Local Server
 - モバイル オートメーション
 - ターミナル
 

UI Automation のアクティビティ
このチュートリアルでは、モバイル オートメーション パッケージを使用して、モバイル バンキング アプリケーションのタスクを自動化する方法について説明します。このチュートリアルでは、Bank of America が提供するモバイル バンキング シミュレーターと、Sauce Labs の Google Pixel Emulator を使用します。ここでは、特に以下のアクションの自動化とテストに重点を置いています。
- アプリへのログイン。
 - デビット カード ロックの実装。
 - 請求の表示とスクリーンショットのキャプチャ。
 
このチュートリアルでは、アクティビティと API の両方を使用してこれらのシナリオを自動化する方法について説明します。
- Sauce Labs から MDM にデバイスを追加します。
                        
デバイスの追加の詳細については「Adding Sauce Labs device」をご覧ください。
 - Bank of America のモバイル バンキング シミュレーターを MDM に追加します。
                        
アプリケーションの追加の詳細については「Adding applications」を参照してください。
 
この手順に従ってチュートリアルを自身で試すには、サンプル プロジェクト「Mobile Banking Simulator」をご覧ください。
この例では、オブジェクト リポジトリの要素をアクティビティの入力 UI 要素として使用します。モバイル用の UI 要素を作成するには、モバイル デバイス マネージャー (MDM) でターゲット デバイスとアプリケーションとの接続を確立します。次に、[オブジェクト リポジトリ] パネルで直接各要素を作成し、[要素を指定] を使用して MDM デバイス上の特定の UI 要素を指定します。
チュートリアルを容易に実行できるように、オブジェクト リポジトリの構造に関する次のリストを確認します。
- BankOfAmerica アプリケーション、MobileScreen メニュー
                     
- backFromClaimDetails
 - backFromClaimStatus
 - BackToMenu
 - firstClaimSeeDetails
 - Lock
 - LockCard
 - ログイン
 - ManageDebitCredit
 - メニュー
 - パスワード
 - swipeMenu
 - UserId
 - viewmyclaims
 
 
手順
- 次の手順で、デバイスとアプリケーション間の接続を確立します。
                        
- [モバイル デバイス接続] アクティビティを追加します。
 - [接続の詳細を選択] を使用して、作成済みモバイル デバイスとアプリケーションを接続します。
 
 - モバイル アプリケーションにログインします。
                        
- [ユーザー ID] フィールドを選択する [タップ] アクティビティを追加して、ユーザー名を入力できるようにします。
 - [ユーザー ID] フィールドにユーザー名を入力する [テキストを設定] アクティビティを追加します。
 - [パスワード] フィールドを選択する [タップ] アクティビティを追加して、パスワードを入力できるようにします。
 - 対応するパスワードを入力する [テキストを設定] アクティビティを追加します。
 - [タップ] アクティビティを使用して [ログイン] ボタンを選択します。
 
図 1. アプリケーションへのログイン過程になる 1 番目のアクティビティ
 - デビット カードまたはクレジット カードをロックします。
                        
- モバイル バンキング アプリのメニューへ移動する [タップ] アクティビティを追加します。
 - メニューを下にスワイプする [スワイプ] アクティビティを追加します。
                              
目標は、[Manage Debit/Credit] セクションが見つかるまでスワイプすることです。
 - [Manage Debit/Credit] セクションを選択する [タップ] アクティビティを追加します。
 - 1 番目に表示されるカード ロック アイコンを選択する [タップ] アクティビティを追加します。
 - ロック カードの通知を下方へスワイプする [スワイプ] アクティビティを追加します。
                              
この操作では、[Lock Card] を選択して操作を確定できます。
 - [Lock Card] を選択する [タップ] アクティビティを追加します。
 
図 2. デビット カードをロックするアクティビティ
 - 請求のスクリーンショットを撮影します。
                        
- [戻る] ボタンを選択する [タップ] アクティビティを追加し、メイン メニューに戻ります。
 - [View My Claims] セクションが表示されるまでメイン メニューを下方にスワイプする [スワイプ] アクティビティを追加します。
 - [タップ] アクティビティを使用して [View My Claims] セクションを選択します。
 - 最初の要求の [See details] を選択する [タップ] アクティビティを追加します。
 - TakeScreenshot API を使用して、最初の要求でその詳細のスクリーンショットを撮影します。
 
図 3. 請求のスクリーンショットの作成に使用するアクティビティ
 - このスクリーンショットを撮った後、アプリのメイン メニューに戻り、[タップ] アクティビティを使用して [戻る] UI 要素を 2 回選択します。
 
前提条件
API を使用してモバイル アプリケーションを自動化するには、そのアプリケーションのモバイル要素をプロジェクトのオブジェクト リポジトリに記録します。この例では、自動化に使用する UI 要素をすべて収めた一般的な MobileScreen を持つ BankOfAmerica アプリケーションを作成しています。モバイル用の UI 要素を作成するには、モバイル デバイス マネージャー (MDM) でターゲット デバイスとアプリケーションとの接続を確立します。次に、[オブジェクト リポジトリ] パネルで直接各要素を作成し、[要素を指定] を使用して MDM デバイス上の特定の UI 要素を指定します。
オブジェクト リポジトリの構造については、次の一覧をご覧ください。
- BankOfAmerica アプリケーション、MobileScreen メニュー
                        
- backFromClaimDetails
 - backFromClaimStatus
 - BackToMenu
 - firstClaimSeeDetails
 - Lock
 - LockCard
 - ログイン
 - ManageDebitCredit
 - メニュー
 - パスワード
 - swipeMenu
 - UserId
 - viewmyclaims
 
 
手順
- 次の手順で、デバイスとアプリケーション間の接続を確立します。
                        
- Connect API を使用して、2 つ目のオーバーロード バージョンで 
Connection型の変数を作成します。このオーバーロードの場合は、デバイス名とアプリケーション名を文字列として入力して、コネクションを確立します。
[TestCase] public void Execute() { Connection connection = mobile.Connect( "Android mobile device", "BankOfAmericaSimulator"); Log("Connection established");[TestCase] public void Execute() { Connection connection = mobile.Connect( "Android mobile device", "BankOfAmericaSimulator"); Log("Connection established"); 
 - Connect API を使用して、2 つ目のオーバーロード バージョンで 
 - 必要に応じて、デバッグの目的で、接続後に 
Logメッセージを追加できます。 - モバイル アプリケーションにログインします。
                        
- Tap API を呼び出して、[ユーザー ID] フィールドをクリックします。
                              
このアクションではユーザー名を入力できます。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId); - SetText API を使用して、[ユーザー ID] フィールドにユーザー名を入力します。
connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId, "john.doe@uipath.com", MobileOptions.SetText().WithSendNewline(false));connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId, "john.doe@uipath.com", MobileOptions.SetText().WithSendNewline(false)); - Tap API を呼び出して [Password] フィールドを選択し、パスワードを入力できるようにします。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password); - Set Text API を使用して、[パスワード] フィールドにパスワードを入力します。
                              
WithSendNewLine(false)メソッドは、テキストの送信後にモバイル デバイス上で OK キーボード要素が押されないようにしています。Set Text API で使用できるオプションについて詳しくは、「MobileOptions.SetTextOptions クラス」をご覧ください。connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password, "abcde", MobileOptions.SetText().WithSendNewline(false));connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password, "abcde", MobileOptions.SetText().WithSendNewline(false)); - Tap API を使用して [ログイン] を選択します。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Login);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Login); 
 - Tap API を呼び出して、[ユーザー ID] フィールドをクリックします。
                              
 - デビット カードまたはクレジット カードをロックします。
                        
- Tap API を使用してモバイル バンキング アプリのメニューへ移動します。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Menu);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Menu); - Swipe API を使用してメニューを下方へスワイプします。
                              
目標は、[Manage Debit/Credit] セクションが見つかるまでスワイプすることです。
connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, SwipeDirection.Down, 4);connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, SwipeDirection.Down, 4); - Tap API を使用して [Manage Debit/Credit] セクションを選択します。
                              
WithTimeout()メソッドを使用すると、あらかじめ定義した秒数だけ、この API を一時停止できます。この一時停止は、ターゲット UI 要素が表示されるか、エラーがスローされるまで継続します。connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, TapTypeEnum.Single, MobileOptions.Tap().WithTimeout(120));connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, TapTypeEnum.Single, MobileOptions.Tap().WithTimeout(120)); - 表示された最初のカードについて、Tap API を使用してロック アイコンを選択します。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Lock);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Lock); - Directional Swipe API を使用してカード ロック通知を下方にスワイプし、[Lock Card] を選択することでアクションを確認できるようにします。
connection.DirectionalSwipe(SwipeDirection.Down);connection.DirectionalSwipe(SwipeDirection.Down); - Tap API を使用して [Lock Card]を選択します。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.LockCard);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.LockCard); 
 - Tap API を使用してモバイル バンキング アプリのメニューへ移動します。
 - 申し立てのスクリーンショットを撮ります。
                        
- Tap API と [戻る] アイコンを使用してメイン メニューに戻ります。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.BackToMenu);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.BackToMenu); - [View My Claims] セクションが表示されるまで、メイン メニューを下方にスワイプします。
                              この手順では、Swipe API を使用します。今回は 6 番目のオーバーロードを使用します。このオーバーロードでは、スワイプ コンテナーに
IElementDescriptorと、ターゲット UI 要素にSelectorTargetが必要です。最初に [View My Claims] セクションにSelectorTargetを作成したうえで、Swipe API を使用します。- MDM を開き、モバイル デバイスとアプリケーションとの接続を作成します。
 - オブジェクト リポジトリに移動し、モバイル画面の新しい要素を作成します。
 - [要素を指定] を選択します。
 - [選択オプション] メニューから、セレクターで特定した Web コントロールをコピーします。
                                    
このモバイル バンキング アプリでは、ネイティブ セレクターである WebView セレクターが選択オプションとして選択されるようにする必要があります。
 - コード エディターに戻り、
SelectorTarget型の変数を作成します。MobileTarget.FromSelectorメソッドを使用します。このメソッドは、コピー済みの Web コントロールを引数として必要とします。SelectorTarget viewMyClaimsTarget = MobileTarget.FromSelector("<mbl android:className='android.widget.TextView' text='View My Claims' />");SelectorTarget viewMyClaimsTarget = MobileTarget.FromSelector("<mbl android:className='android.widget.TextView' text='View My Claims' />"); SelectorTarget変数を指定した Swipe API を使用して、下方へのスワイプ アクションを完了します。connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, viewMyClaimsTarget, SwipeDirection.Down, 20);connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, viewMyClaimsTarget, SwipeDirection.Down, 20);
 - [View My Claims] セクションをタップします。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.viewmyclaims);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.viewmyclaims); - 1 番目の請求で [See details] をタップします。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.firstClaimSeeDetails);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.firstClaimSeeDetails); - TakeScreenshot API を使用して、最初の申し立ての詳細のスクリーンショットを撮ります。
connection.TakeScreenshot();connection.TakeScreenshot(); 
 - Tap API と [戻る] アイコンを使用してメイン メニューに戻ります。
 - 最後に、スクリーンショットを撮った後、[Back] の UI 要素を 2 回タップしてアプリのメイン メニューに戻ります。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimDetails); connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimStatus);connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimDetails); connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimStatus);