Blue Prism ( ブループリズム )で、 Webアプリ画面の スパイ ( 識別 )できない!とか、スパイしたつもりが「ハイライト」でエラーになる!などを経験したことはありませんか?
このコラムではその際に考えられることや注意点をまとめます。
解決のヒントが見つかるかもしれません。
目次
Blue Prism での スパイ (識別)の基本をおさらい
Blue PrismでWebアプリなどの外部システムを自動化するには、オブジェクトの"アプリケーションモデラー"で操作対象の要素、例えばボタンや入力エリアをスパイ(識別)する必要があります。
対象画面にアタッチした後、「識別」ボタンを押して要素の情報を取得し、「ハイライト」ボタンで確認します。
ここで操作対象の要素が、赤枠でハイライトされたらスパイ(識別)成功!となるわけです
ですが図1("エラー ‐ハイライトの結果 - 指定されたクエリ条件に一致する要素がありません")や、図2("警告 - ハイライトの結果 - 一致する要素が複数見つかりました:")のようにハイライトを行ってもエラーになってしまうケースや、そもそも操作対象の画面要素をスパイ(識別)できない(緑の枠が当たらない)という場合もあります。
そんな時は、次のようなことを試してみましょう!
マッチ条件の確認
Blue Prism のアプリケーションモデラーは、一意に特定が可能と考える属性に対し自動でチェックをいれてくれます。ただし自動でチェックされた条件はそのまま使えるとは考えないほうがよいです。
図1のように、「指定されている条件に一致する要素がない」というエラーメッセージの場合、チェックを入れた属性のマッチ条件が変わっていることがあるかもしれません。
図2のように、「一致する要素が複数見つかる」というエラーメッセージの場合、チェックの属性を増やすことで一意に特定ができるかもしれません。
ハイライトでエラーになった時はもちろん、ハイライトに成功した時も適宜調整しましょう。(マッチ条件設定のノウハウは奥が深いので、また別の機会に。)
スパイモードの切り替え
マッチ条件を調整してもハイライトがうまくできない、もしくはスパイ(識別)自体ができない時は、スパイモードを変更してスパイ(識別)できるか試してみましょう!
スパイモードは、アプリケーションモデラーの設定で指定する、アプリケーションタイプで取得できる情報が変ってきます。
アプリケーションタイプの選択(後述)で「ブラウザベース(Internet Explorer)」を選択し「識別」ボタンを押した時、初めに緑のウィンドウ(図4)が表示されるかと思います。
これは「HTML」の属性情報を取得できるHTMLモードです。なおスパイモードは、「ALTキー」を押すごとに切り替えることができ、表示される順番で試すことを推奨しています。なお、「HTMLモード」がモードを切り替えても表示されない場合、アタッチ先が間違っている可能性が高いです。IEは2つのWindowsプロセスで動作し、片方がHTML表示を担当していますのでChild Index(子インデックス番号)を切り替えて試してみましょう。
Windowsアプリケーションの基本的な要素のスパイを可能とする「win32モード」
WPF (Windows Presentation Foundation)に対応し、全Windowsオペレーティングシステムで利用できる情報を取得する「UIオートメーションモード」
Microsoft Active Accessibility (AA)の情報を取得できる「アクセシビリティモード」
では、各スパイモードをWebアプリでどのように使うかについて、簡単に見ていきましょう。
HTMLモード
名前の通り、HTMLの属性情報を取得するモードです。ご存じの方も多いでしょうが、HTMLとはWebページの内容を記載したファイルの形式で、IEのようなブラウザはこの形式のファイルを指定したURLからダウンロードして表示する機能を持ったソフトです。
このモードを使うときの注意が、あくまでHTMLが操作対象となることです。対象がIEだとしても、HTMLを表示している部分(タブページ内部)以外の場所はHTMLではないため、このモードでスパイすることはできません。一部のダイアログはHTMLを使って表示されていますが、多くのダイアログも同様にスパイ不可能です。スパイがうまく行かない場合はとりあえずモードを切り替えてみましょう。
win32モード
上の通り、IEのようなWebブラウザ自体はHTMLで作られているわけではありません。「HTMLを表示する機能を持ったWindowsアプリ」と考えるのが適切です。
なのでHTMLモードでスパイできない、タブページの外の部分などはwin32モードで認識可能なことが多いです。
例えば、図7や図8の画面のように、win32モードで画面内の要素(ボタン等)を特定できる画面があります。これらは、Windowsが汎用部品的に提供している機能のため、Webアプリを操作中に図7や図8のようなダイアログが表示されても、win32モードでの操作が必要です。
UIオートメーションモードとアクセシビリティモード
ブラウザーモードやWin32モードでもスパイ(識別)ができない場合、UIオートメーションモード(通称UIA)やアクセシビリティモード(通称AA)を試すとうまく行くことがあります。これらは処理速度が遅いため、これらのモードでしか要素が特定できない場合に使用します。
使用する場合も、UIAとAAどちらが速いか?マッチインデックスをマッチ条件にしたら認識速度が改善しないか?など、少しでも速くなるよう調整しましょう。
Blue Prism でのオブジェクトの分け方のTips
図7や図8のようなダイアログ画面を操作する時は、呼び出し元の画面とは別のオブジェクトを作成しましょう。
「オブジェクトは画面ごとに分割して小さく作る」がBlue Prismのベストプラクティスです。単に保守性がよくなるだけでなく、アタッチが分離することでエラーが解消されることもあります。
実際にダイアログオブジェクトを作る時に迷いがちなポイントをいくつか挙げておきます。
●アプリケーションウィザードの使用しているアプリケーションのタイプは「Windowsアプリケーション(図11)」を選択。
●アタッチも新しく作ったオブジェクトで、あらためて行いましょう。
●アタッチパラメータのwindowタイトルやプロセス名は、呼び出し元の親画面と同じです。ダイアログを操作する場合などは、windowタイトルをプロセスから設定してアタッチできるようにオブジェクトを設計すると、呼び出し元が違うときでも同じオブジェクトを使用可能となりとても便利です。
双日テックイノベーションの Blue Prism エンジニアからの一言
自動でチェックされるマッチ条件は、必ず見直しましょう。
スパイ(識別)がうまくいかない時は、モードを切り替えてみましょう。
そもそもHTMLモードが表示されない場合は、アタッチ先を見直しましょう。
上手くスパイできない子画面やダイアログは、オブジェクトを分けてアタッチしてみましょう。
\ Blue Prism の使いこなし方を学びたいときはこちら/
※Blue Prismユーザーの皆様に向けて、Blue Prism開発に役立つコツを書き溜めています。コチラも是非見てみてください!Blue Prism好きなエンジニアがみな様の躓きポイントを解説しています。
>>Blue Prism 開発Tipsブログ:https://digital-labor.sojitz-ti.com/blog-tag/blue-prism/