(UiPath超初心者向け)UiPathで簡単に座標指定クリックさせるには?

By | 2018年7月19日

(UiPath超初心者向け)UiPathで簡単に座標指定クリックさせるには?

※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、
この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。

UiPathにはセレクターという機能があり、セレクターを指定すれば、
特定のオブジェクトに対してだけクリックをさせることができます。
セレクターがうまく取得できない場合は以下のような方法をとる必要があります。

・画像認識
・OCR
・座標指定

このうち上2つはデスクトップの画像をもとに動作をしますが、
最後の座標指定はセレクタと組み合わせることも可能です。
部分的にしかセレクタが取れなかったとしても座標指定は画像認識と違って、
上にほかのオブジェクトが重さなったとしても動作ができますので、
使いこなせるようになると自動化の幅が広がります。

それでは使い方を覚えましょう。操作するアプリはWindows7標準の電卓にします。

1.クリック(Click)アクティビティをワークフローに追加します。

2.画面上で指定(Indicate on screen)を押して、電卓の8をクリックします

この方法はセレクタで記録する方法です。まだ座標指定ではありません。
ここでまず、セレクタが取れる場合はどこに設定されているかを確認しましょう。

3.クリック(Click)アクティビティのプロパティでターゲット(Target)の横の+を押して、
その中からセレクター(Selector)横の…ボタンを押して内容を確認します

うまくセレクタが取れるタイプのアプリケーション等はこのようにセレクタが設定されます。ここで右端の…ボタンを押すと別ウィンドウが開き詳細が確認できます。


画像の4番目のチェックボックスを見ると、電卓の8ボタンのctrlidという値が138という数値であることがわかります。
これが「セレクタを指定する」という方法です。
それでは次はいよいよ座標指定の方法です。

4.クリック(Click)アクティビティのプロパティからオプション(Options)の横の+を押して、
カーソル位置(CursorPosition)の値を確認します

画像のようにXのオフセット(OffsetX)とYのオフセット(OffsetY)、位置(Position)というボックスがあります。
位置(Position)で指定した場所(たとえばCenter=セレクタで指定したオブジェクトの中央)から、
オフセット(Offset)の分だけXが横、Yが縦にいくつずれるかを指定できます。

これで任意の場所にあるオブジェクト(ボタン等)の座標がわかれば指定して押させることができます。

・・・いやいやそんなめんどくさいことやってられないですけど

そう思った方、まったくその通りだと思います。
非人間的な繰り返し作業をしないために、面倒なXYの引き算なんてしたくありません
というわけで、もう一つの設定方法をご紹介します。

1.クリック(Click)アクティビティで画面上のIndicate on screenを押します。

2.クリックしたいオブジェクトを選択するモードになったら、F3を押します。

3.クリックしたい場所をクリックします

以上、これだけで座標指定が可能です。一体、オフセットとはなんだったのでしょうか。
※F3キーは本当は範囲指定機能ですが、クリックだけすると1点だけが指定され、結果的に座標指定となります。
実は画面の左上に出て来る拡大鏡にも使い方のヘルプは書かれています。

こちらで設定した場合はオフセット(Offeset)ではなく、
ターゲット(Target)のクリッピング領域(ClippingRegion)というプロパティに値が設定されます。

<おまけ>F3で電卓の8キーを指定したときのセレクター(Selector)はこんな感じになります。


さっきの8ボタンのセレクタ(183)が取得できていないことが確認できますね。
また、この状態で電卓を非表示状態にして実行しても、
正しくボタンを押してくれますので、試してみてください。
ここが画像認識と違う強みですね。

ただしアプリケーションの形そのものが変わって、8のボタンの場所がずれるとダメです。
一方でセレクターでctrlid183を指定する方法だと、
その183が変わらない限りどこにボタンが移動しても押してくれます。
つまり、レイアウト変更などのアプリ改修があってもそのまま動いてしまう可能性が高いというわけです。
これがセレクターで認識できる場合の強みです。