こんにちは。鈴木です。
今回はオブジェクトが認識されない場面を想定し、
Image RecognitionコマンドとInsert Keystrokesコマンドを組み合わせて
Web上の文字列を取得するボットを作成してみたいと思います!
Let's RPA!!
□目次
※AAE Clientのバージョン:11.3.4.0
1.オブジェクトが認識されないとは?
Web RecorderコマンドのManage Web Controlsでキャプチャしても
コントロールの詳細を正しく取得できなかったり、
Object Cloningコマンドでキャプチャしても赤い枠が点滅しなったりすることを
オブジェクトが認識されないといいます。
特に画面操作の自動化ではオブジェクトを認識することが最大の武器なので、
オブジェクトが認識できないと非常に困ってしまいます。
2.想定するシチュエーションと対処方法
下記のようなシチュエーションを想定してみます。
対 象:入庫管理システム(Webシステム)
データを登録すると一覧表の一番上にデータが追加される
目 的:一覧表の一番上に表示されているデータの特定の項目(商品番号)の値を取得したい
状 況:Web Recorderコマンドでも、Object Cloningコマンドでもオブジェクトが認識されない
対処方法
下記のコマンドと設定で値を取得してみたいと思います。
①一覧表の「商品番号」をImage Recognitionコマンドで画面上から検索し、
クリック位置を調整してダブルクリックする
②値が選択されているのでInsert Keystrokesコマンドで値をコピー(Ctrl+C)する
③正しく取得できたか確認するため、コピーした値をMessagebBoxで表示する
3.各コマンドの基本的な使い方
今回の肝となる2つのコマンドの使い方をご紹介します!
1.Image Recognitionコマンド
設定ダイアログにある画像1で設定したウィンドウ(内のキャプチャした画像)から、
画像2で設定した画像を検索します。
赤点線で囲っている設定内容が最も重要です!設定手順をみましょう!
まずは画像1の設定について説明します。
①検索範囲のウィンドウを指定します。
②①で設定したウィンドウから更に検索範囲を絞る場合は、
キャプチャボタンをクリックして検索範囲を指定します。
座標を表示したい場合は、チェックボックスにチェックを入れます。
また、読み込みに時間かかかる画面の場合は、
キャプチャされるまでの待機時間を増やして調整してみてください。
次に画像2の設定について説明します。
③検出したい画像をウィンドウからキャプチャするか、
ファイルから読み込むかを指定します。今回は「ウィンドウから」を指定しました。
④検出したい画像をキャプチャするウィンドウを指定します。
⑤キャプチャボタンをクリックして検索範囲を指定します。
発見回数:は、画像1内で画像2が複数個検出された際に、
何個目の画像を対象にするのかを指定できます。
キャプチャボタンを押下すると、赤点線でマーカーが表示されます。
ドラッグ&ドロップで検出したい画像の範囲を指定してキャプチャします。
範囲指定した部分は下の画像のようにハイライトされ、薄い赤十字線が表示されます。
正しくキャプチャされるとダイアログが表示され、指定した範囲が赤線で囲われています。
★★★★★★★★★★★★★★★★★★★★★★
✍コラム:キャプチャした画像がうまく検出されなかったら・・・?
キャプチャした画像が検出されない場合は下のようなエラーメッセージが表示されます。
正しくキャプチャされない場合は、エラーメッセージの内容を確認することに加えて、
キャプチャする範囲を少し変えてみてください。修正例は下の画像を見てください。
修正後は画像が青一色ではなく上と下に白色が入るようにしています。
小さな違いですがこれだけの変更で正しく検出されることもあります。
★★★★★★★★★★★★★★★★★★★★★★★
赤枠の左上の1は発見回数:のことです。
もし、画像が複数個検出された場合は、各画像にインクリメントされた番号がふられます。
赤枠の中央にある赤い照準のようなマークはクリックする位置を示しています。
今回は、クリック位置を下にずらしました。
クリック位置も調整できたので、クリックの種類を指定します。
⑥画像が見つかった場合のクリックの種類を指定します。今回はダブルクリックを指定しました。
⑦マッチする割合:は、画像1の中から画像2を検出する際に、
画像が一致しているとみなす割合を1~100で指定します。
値が大きければより精密に一致しているかを判定されます。
値を小さくしすぎると関係ないような画像も検出してしまうのでご注意ください。
⑧比較モード:は、Advanced、Normal、Gray-Scale、Monochromeから指定します。
Advancedはデフォルトで選択されるモードで、他のモードに比べて最も正確です。
指定したモードによって、マッチする割合:以外の設定項目が表示されることもあります。
最後にリピートの設定をしましょう。
画像が見つからないとリピートをチェックすると、回数と、リピート間の待機時間の
設定内容に沿って画像の検出を繰り返します。
ボットを動かしてみると、ダブルクリックで値を選択することができました!
★★★★★★★★★★★★★★★★★★★★★
✍コラム:ダブルクリックで文字列が選択されなかったら・・・?
ダブルクリックだけでは文字列が選択できない場合もあります。
そういった場合は下記を試してみてください。
修正前)
Image Recognitionコマンドでダブルクリック
修正後)
Image Recognitionコマンドでクリック
Image Recognitionコマンドでダブルクリック
対象の文字列をトリプルクリックするイメージです。
★★★★★★★★★★★★★★★★★★★★★★★
【動画】
コマンドの設定から動作確認まで実施した動画です。クリックすると動画が再生されます。
2.Insert Keystrokesコマンド
設定内容はとても単純ですが、ショートカットキー(Ctrl+Cなど)を使う場合は注意が必要です。
まずは単純な文字列をキー入力する場合です。
対象のウィンドウを指定して、キーボード操作にキー入力したい文字列を記述するだけです。
次にショートカットキーを使用する場合です。
「Ctrl+C」のキー入力は下記のように設定します。
「Ctrl+A」や、「Ctrl+Ⅴ」も同じように設定すればOKです。
Altキーや、Shiftキー等を押したままで使うショートカットも同様の設定になります。
4.オブジェクトが認識できなくても!
それでは、想定するシチュエーションへ対応すべくボットを作っていきたいと思います。
データが登録されることで表示内容が変わっていく一覧表のデータを
Image Recognitionコマンドでどのようにとらえていくかがポイントになります。
STEP1(Image Recognitionコマンドの設定)
Image Recognitionコマンドで対象の値をダブルクリックで選択するようにコマンドを設定します。
画像1は、画面の表示内容が変わることが想定されるので、
ウィンドウ全体ではなく一覧表のヘッダをキャプチャしています。
画像2は、値をダブルクリックできるようにクリック位置を調整しています。
ここまでできたたら、ダブルクリックで正しく文字列を選択できるか確認しておきます。
STEP2(Image Recognitionコマンドの修正)
一覧表の1行目は最新の登録データが表示されるので、
このままのキャプチャでは画像認識がうまく動かなくなる可能性があります。
画像1のキャプチャを↓の画像のように修正します。
最初から修正後のようなキャプチャをしてもいいのでは?
と考える方もいらっしゃるかもしれませんが、
そうすると下の画像のように1行目のデータ部分にクリック位置を調整できなくなってしまいます。
最終的にImage Recognitionコマンドはこのような設定になりました。
Insert Keystrokesコマンドや、Clipboardコマンドを使って、ボット全体はこのようになりました。
ボットを動かしてみると正しく値が取得できています。
1行目のデータが変更されても正しく値を取得できていました!
【動画】
ボットの動きは動画をご覧ください。クリックすると動画が再生されます。
5.まとめ
オブジェクトが認識されないという困った問題に立ち向かってみました。
RPAの導入は必ずしもすんなりと進むものではありませんが、
コマンドを使いこなせれば、自動化の道が拓けると思います。
今後も困ってしまうシチュエーションを想定して
色々な対処方法をご紹介していきたいと思います。
それでは!
著者紹介
先端技術推進統括部
RPAビジネス推進部
鈴木 陽介
C#によるシステム開発、POS開発を経てRPAエンジニアに。