はじめに

こんにちは! PAPのたかはしです。

Blue PrismでGoogle Chromeを利用して自動化を行う際、どのモードで要素取得をすればいいか迷ったことはありませんか? ブラウザーモードで取得した要素が安定せず、試しにUIオートメーションモードで取得してみたら安定した――なんてことも少なくないと思います。

また、それぞれのモードで取得可能な情報や実施可能な操作にも差異がありますので、操作によっては特定のモードでの要素取得が必要になることも……。
 

そこで、本日は、Chromeブラウザで要素を取得する際のそれぞれのモードについて、解説をしたいと思います!

ブラウザーモード

ブラウザ内の要素を取得する際に基本となるモードです。
HTMLで構成されているサイトであれば高いパフォーマンスで安定した要素取得が可能ですが、サイト構成の変化に弱く、マイナーなバージョンアップで要素の再取得が必要となる可能性が高いです。

また、サイト構成の情報読み取りやCookieの更新、JavaScriptの挿入や実行が必要な場合、ブラウザーモードでの要素取得が必要となります。
 

ブラウザーモードで可能な読み取り・操作一覧
 

■読み取り

  • HTMLを取得
  • IDを取得
  • テキストを取得
  • パスを取得
  • ページURLを取得
  • ラベルを取得
  • 画面に表示されるかどうかを取得
  • 現在値を取得
  • 座標位置を取得
  • 属性を取得
  • 表示されるかどうかを取得
     

■操作

  • Cookieを更新
  • JavaScriptフラグメントを挿入
  • JavaScript関数を呼び出す
  • アドレスを設定
  • カーソルを置く
  • クリック
  • グローバルキー送信
  • グローバルマウスホバー
  • スクロール先
  • ダブルクリック
  • テキスト範囲を選択
  • フォーカス
  • 確認
  • 選択
  • 属性を設定

Win32モード

ブラウザの要素ではなく、画面のアクティブ化、最大化、最小化、ウィンドウに対するキー操作など、ウィンドウに関わる操作を実行する場合は、Win32モードでブラウザのウィンドウ全体を取得しておきます。
ブラウザ内の要素は、このモードでは取得できません。
 

Win32モードでの読み取り・操作一覧

■読み取り

  • ウィンドウがアクティブかどうかを取得
  • ウィンドウが非表示かどうかを取得
  • ウィンドウ属性を取得
  • テキストを取得
  • メニューアイテムがチェック済かを取得
  • メニューアイテムが有効かを取得
  • 画面の座標位置を取得
  • 座標位置を取得(※廃止予定)
  • 相対座標位置を取得


■操作

  • Altキーと組み合わせるウィンドウキー操作
  • アプリケーションをアクティブ化
  • ウィンドウのキー操作
  • ウィンドウの中央をクリック
  • ウィンドウを再表示
  • ウィンドウを非表示
  • グローバルダブルマウスクリック
  • グローバルマウスクリック
  • グローバルマウスクリック(中央)
  • グローバルマウスで中央をダブルクリック
  • サイズ変更
  • ドラッグ
  • ドロップ
  • メニューアイテムを選択
  • 移動
  • 確認
  • 最小化
  • 最大化
  • 復元
  • 閉じる

UIオートメーションモード

通常はUIオートメーションモードでのブラウザ内の要素取得はできませんが、Chromeを起動する際のコマンドラインパラメータに「--force-renderer-accessibility=complete」パラメーターを追加することで、ブラウザ内の要素も取得可能になります。


UIオートメーションモードでは、Microsoft UI オートメーションというMicrosoftが用意しているアクセシビリティ フレームワークから情報を取得しています。
対向システム側の変更に強いというメリットがありますが、要素によって一意の要素特定が難しかったり、要素の取得や特定に時間がかかったりなどのデメリットもあります。
 

UIオートメーションモードでの読み取り・操作一覧

■読み取り

  • UIA属性を取得
  • 画面の座標位置を取得
  • 現在値を取得
  • 選択したテキストを取得
  • 相対座標位置を取得
  • 名称を取得


■操作

  • グローバルキー送信
  • グローバルマウスクリック
  • グローバルマウスクリック(中央)
  • ドラッグ ※ウィンドウのみ
  • ドロップ ※ウィンドウのみ
  • フォーカス
  • 押す ※ボタンのみ
  • 確認

領域モード

ブラウザーモードでもUIオートメーションモードでも要素の取得が安定しない場合、領域モード(画面領域、画像一致、文字認識)での要素取得となります。

画像での要素取得となるため情報の取得に制限があり、画面解像度の変更やUIの変更など、画面が変更された場合は修正が必要になります。

また、文章の読み取りが必要な場合、光学式文字認識(OCR)での識別となります。
「テキストを認識」ではフォント、前景色、背景色を指定することで文字を認識し、「OCRでテキストを読み取る」では埋め込みTesseract OCRエンジンを使用しての文字認識となります。

フォントが指定できる場合は「テキストを認識」を、スキャンされた文書などフォントを指定できない場合は「OCRでテキストを読み取る」を選択します。


領域モードでの読み取り・操作一覧

■読み取り

  • OCRでテキストを読み取る
  • Read Text(レガシー)
  • Win32の親テキストを取得
  • ウィンドウ属性を取得
  • テキストを読み取る
  • テキストを認識
  • 画像を読み取る
  • 画面の座標位置取得
  • 座標位置を取得


■操作

  • グローバルマウスクリック
  • グローバルマウスクリック(中央)
  • ドラッグを開始
  • ドロップ先
  • 確認
  • 中央をクリック

最後に

Chromeで要素を取得する際に選択できるモードについて解説してみましたが、いかがだったでしょうか。
要素モードを状況に応じて選択することで、より安定したロボット作成が可能になると思いますので、ぜひ活用してみてくださいね!