こんにちは、中川です。
WinAutomationに限りませんが、RPAでロボを作っていると画面やブラウザのボタンなどの要素を正しく認識してくれないことがあります。そんな時にどうすれば良いか、対処法についてです。
部品どころか全然認識してくれないとき
そもそもリモート接続している環境など、直接画面を参照できていないということはないでしょうか?
その場合、WinAutomation(に限らず他のRPA製品もですが)では画面を画像のように認識します。
そのため画面を構成する要素(ウィンドウ、ボタン、テキストなど)を認識することができません。
この場合は直接参照できる環境で実行するか、”If Image”アクションなどを使って画像認識させるしかないでしょう。
次に考えられるのは権限がない場合です。
この場合はWinAutomation Consoleを「管理者として実行」するとうまく認識してくれることがあります。
ただ、まれに自動操作される側のアプリケーションが構成解析(画面の部品等を解析すること)を防止している場合があるため、その場合も画像認識させるしかありません。
画面の要素を指定したいとき
WinAutomationに限らず要素を正しく認識させることは難関の1つです。
WinAutomationの場合、まずは要素をControls RepositoryControlに登録して、要素をWinAutomationで使用できるControlとして認識させる必要があります。
そのためにまずはControls Repositoryの右のほうにある”Add Control”ボタンを押して、開いている画面内の要素を指定します。
この時、マウスを動かすとオレンジの枠が見えるはずです。これがWinAutomationが要素を認識しようとしている状態です。
↑こんな感じ
※この処理は負荷がかかるため、スペックの乏しいPCだとなかなか反応してくれないかもしれません。
このオレンジの枠を指定したい要素に合わせてから、キーボードの左側のControlキーを押しながらマウスで左クリックします。
するとControls Repositoryに今クリックした要素が追加されていると思います。これでその要素を使えるようになりました!
実はこれでも認識できない場合があります。モーダルウィンドウの要素を認識したい時などがそうですね。
この場合はUISpyという機能を使います。
上記の手順の通り進めてオレンジの枠が表示されている状態にします。そこでキーボードのEscapeキーを押してください。
すると「WinAutomation UISpy」という小さいウィンドウが現れたと思います。
このUISpyを使えばもっと柔軟に要素を認識できるのですが、少し難しいのでこの話はまた今度。
※すぐに知りたいという人はお問合せからご連絡ください。