【UiPath】「アンカーの使い方」を理解する【初心者】
UiPathの学習追体験記事です。
※あくまで学習中の脳内を記事にしたものなので、この記事で書かれてあることが”正しい”とは限りません。
参考:学習効率本5巻 「知識の自作」
0.動機

「UiPath RPA アソシエイト資格試験」を受けたい!
と思い、練習問題のプラクティステストを受けてみたが、正答率は半分にも満たなかった。徹底的にプラクティステストの復習をするしかない!
ということで、本記事では、プラクティステストで間違えた問題の復習の様子を書きつらねていきます。
まずは、間違えた問題の紹介。
UiPath Studioでアンカーとして使用できるアクティビティはどれですか。
引用元:https://www.pearsonvue.co.jp/uipath
UiPath RPA アソシエイト資格試験 プラクティステスト
解説部分には、この問題で求めている知識が紹介されていた。内容は以下。※答えは明示されてない
トピック:アンカーの使用方法と使用例を理解し、説明できる。
引用元:https://www.pearsonvue.co.jp/uipath
UiPath RPA アソシエイト資格試験 プラクティステスト

アンカー、あまり意識して使ったことないな~。理解できるか不安だ。。
では、以下から、「アンカーの使い方」の復習をしていく。
1.座学
書籍やネットの情報をもとに学習
検索
理解する対象についての情報を書籍やネットで調べる。
今回の理解の対象である「アンカー」については、UiPathアカデミー・ドキュメント・書籍でまとまった情報が見当たらなかったため、下記リンクを参考に学習する。
「アンカー」の説明文を見てみる。
アンカー
アンカーとは、対象とするUI要素を別のUI要素との相対的な位置で示す際に
相対値の基準となるUI要素のことを意味します。……
しかし、アンカーを使用すると、基準となるUI要素が最上部のウィンドウ要素ではなく
アンカーとして指定したUI要素を基準に、対象とするUI要素までの相対的なセレクターが作成されます。引用元:https://www.casleyconsulting.co.jp/blog/engineer/4007/

ふむふむ、アンカーを使用することで、通常のセレクターとは違ったものになるってことかな。
アンカーを使用した場合のセレクターと使用しない場合のセレクターを見比べることで理解が進みそうだ。
セレクター関連記事


吟味
「アンカー」の説明文を軸に考えを膨らませる。

1つ目は、レコーディング中に表示されるポップアップから。
レコーディングで「ファイル(F)」をクリックしたところ表示された。

この画面、レコーディング中によく出てくるよね。よく分からないから、いつも「いいえ」にしてる。
2つ目は、UI Explorerウィンドウから。
「アンカーを選択」のボタンがある。

そもそも、UI Explorerを使ったことないから、このあたりの学習ハードルは高そう。
はじめは、レコーディング中に表示されるポップアップから「アンカーを指定」を選んだ場合と選ばなかった場合のセレクターの違いを見比べた方が良いかも。
2.実践
実際に手を動かすことで理解を深める。
アンカーとセレクター
アンカー指定あり・なしでセレクターにどのような違いがあるか確認する。
【確認方法】
①同じウィンドウ上でレコーディングを行い、アンカー指定ありとなしのワークフローをそれぞれ作成する
②両方のワークフローにある「クリック」アクティビティのセレクターを確認する
③違いを見つける
・アンカー指定なし
まずは、アンカー指定なしのセレクターを見てみる。
「いいえ」をクリック。
ワークフロー概要。
特に変わったことはない。
「クリック」アクティビティのセレクターを確認。
特に変わったことはない。

このセレクターを基準として、アンカーを指定した場合のセレクターとどう違うのかを確認するんだね。
・アンカー指定あり
次に、アンカー指定ありのセレクターを見てみる。
「アンカーを指定」をクリック。
ワークフロー概要。
特に変わったことはない。
「クリック」アクティビティのセレクターを確認。
・セレクター比較
アンカーありとなしでセレクターに違いがあるか見比べる。以下コード。
アンカーなし
<wnd app='notepad.exe' cls='Notepad' title='無題 - メモ帳' /> <ctrl automationid='MenuBar' idx='1' name='アプリケーション' role='menu bar' /> <ctrl name='ファイル(F)' role='menu item' />
アンカーあり
<wnd app='notepad.exe' cls='Notepad' title='無題 - メモ帳' /> <ctrl automationid='MenuBar' idx='1' name='アプリケーション' role='menu bar' /> <ctrl name='ファイル(F)' role='menu item' />
違いはない。。

え、アンカーありなしでセレクターに変化ないの!?!?

冷静になって考えると、アンカーは各々のUI要素との相対位置を示すものだから、「クリック」アクティビティ1つだけでは意味がないのかも。相手がいて成り立つ機能だから、1つだけでは無意味だよね。
・アンカー指定の勘違いに気づく
これまで、レコーディングでアンカーを指定していたつもりが、正しく指定できていなかったことに気づいた。以下、「アンカー指定勘違い」動画。
「アンカーを指定」をクリックした段階で、指定されたものと勘違いして、レコーディングを止めてしまっていた。
正しくは「アンカーを指定」をクリックしたら、次にクリックするものがアンカーとなる。

無知すぎて、恥ずかしい。。
・再度検証
アンカー指定ありなしでワークフローに違いがあるか確認。
アンカー指定なし
特に変わりなし。
アンカー指定あり
「アンカーベース」アクティビティが追加された。また、そのアクティビティの中に「要素を探す」アクティビティが追加されていた。

今まで「アンカーベース」アクティビティと「アンカーを指定」は、別のものと思っていたけど、正しくは、「アンカーを指定」は「アンカーベース」アクティビティを使用しますってことだったんだね!
ってことは、「アンカー」について理解する=「アンカーベース」アクティビティを理解するってことになるかも。
「アンカーベース」アクティビティ内の「クリック」アクティビティのセレクターを確認してみる。
セレクターエディターが開かなかった。
隣の「要素を探す」アクティビティのセレクターを確認してみる。
アンカー指定なしの「クリック」アクティビティのセレクターと同じ内容だった。

アンカーに指定された要素は、セレクターを持っているようだ。
「クリック」アクティビティのUI操作部分とセレクター取得部分を分けてみたって感じかな。
アンカーの学習は、一旦、セーブ。次回は、「アンカーベース」を理解しよう。
3.まとめ
「アンカー指定あり・なしの場合でセレクターに変化はあるか」という疑問をもって、学習を行ってみた。今回アンカーについて理解したことを自分の言葉でまとめてみる。
・レコーディングの「アンカーを指定」は、「アンカーベースを使用しますか?」という意味
・アンカーは、UI操作アクティビティのUI操作部分とセレクター取得部分を分ける機能

コメント