【UiPath】「部分・完全セレクター」を理解する【初心者】
UiPathの学習追体験記事です。
※あくまで学習中の脳内を記事にしたものなので、この記事で書かれてあることが”正しい”とは限りません。
参考:学習効率本5巻 「知識の自作」

0.動機

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

部分と完全かぁ~、意味的には分かりやすそうだけど、どうだろう。なんとなく、「部分セレクターの方が融通がきいて、完全セレクターは融通きかない」みたいな感じになるのかな。
では、以下から、「部分セレクター」と「完全セレクター」の復習をしていく。
1.座学
書籍やネットの情報をもとに学習
検索
理解する対象に関する情報を書籍やネットで調べる。
今回の理解の対象である「部分セレクター」と「完全セレクター」については、UiPathアカデミーの以下の階層にあった。
UiPathアカデミー>UiPath Studio開発 初級コース>レッスン一覧>セレクター
では、「部分セレクター」と「完全セレクター」の説明文をそれぞれ見てみる。
部分セレクター
最上位ウィンドウ (アプリケーション) の要素を含まず、[ウィンドウにアタッチ (Attach Window)]・[アプリケーションを開く (Open Application)] などのコンテナーのセレクターと合わせて機能するセレクターです
引用元:https://academy.uipath.com/jp/learningpath-viewer/1954/1/153401/16
完全セレクター
最上位ウィンドウ (アプリケーション) の要素を含み、UI 要素の特定に必要な全ての要素を含むセレクターです
引用元:https://academy.uipath.com/jp/learningpath-viewer/1954/1/153401/16

ん、セレクターの階層構造と関係ありそう。部分セレクターがルートノード以外のものを指して、完全セレクターがすべてのノードを指しているのかな。
セレクターの階層構造を学習した記事↓

吟味
「部分セレクター」と「完全セレクター」の説明文を軸に考えを膨らませる。

下記の書籍で調べてみた。
完全セレクター
「クリック」アクティビティ単体のセレクターは、「完全セレクター」になるらしい。また、セレクターすべての行が編集可能だった。

あれ、前回、セレクターを試したときは、ルートノードの編集はできなかったのに、今回はできてる。完全セレクターと部分セレクターに関係があるのかな。
前回記事↓

部分セレクター
前回と同様にデスクトップレコーディングで「メモ帳の操作」を記録してみた。
a.「クリック」アクティビティのセレクターエディター
b.部分セレクター
c.「ウィンドウにアタッチ」アクティビティ(「クリック」アクティビティのみのときと異なる部分)

確か、前回はデスクトップレコーディングでメモ帳での操作を記録して、その記録からできた「クリック」アクティビティのセレクターを見てたんだよね。やっぱり、この「クリック」アクティビティのルートノードは編集できないよ。
「ウィンドウにアタッチ」アクティビティのセレクターを見てみる。
ルートノードのみ表示されていた。そして、ルートノードの編集は可能だった。

あ!部分セレクターは、セレクターの階層構造(ノード)の担当を決めているのかも。

ん、、ふと思ったんだけど、わざわざ分ける必要あるかな。すべて完全セレクターの方がシンプルで分かりやすくない?
・メタファーで考える
メタファーとは、
メタファー(隠喩)とは、あることを表現するのに際して、他のものを喩えとして借りて示すこと
引用元:知識創造の方法論(書籍)
https://amzn.to/37aXQaj
「部分セレクターでノードの担当を決めるメリット」をメタファーを利用して予想してみる。
部分セレクターと完全セレクターを「住所(沖縄県国頭郡国頭村宜名真61)」に喩えて考えてみる。
部分セレクターは区切りがあるので、
沖縄県>国頭郡>国頭村>宜名真>61
と管理されているイメージ。
それに対して、
完全セレクターはひとまとめにしているので、そのまま
沖縄県国頭郡国頭村宜名真61
と管理されているイメージ
市町村の合併があり、「国頭村」が「国東村」に変更になった場合を部分・完全セレクターで考えてみる。
部分セレクターの場合は、区切られているので、変更する箇所は1つで良い。
沖縄県>国頭郡>【国東村】
沖縄県>国頭郡>【国東村】>宜名真>61
沖縄県>国頭郡>【国東村】>東>13
変更のある階層のみ修正して、他は変更する必要がないイメージ。
それに対して、
完全セレクターの場合は、ひとまとめにして管理しているため、
沖縄県国頭郡【国東村】宜名真61
沖縄県国頭郡【国東村】東13
沖縄県国頭郡【国東村】……
……
1つ1つの住所ごとに住所の変更を行わないといけないイメージ。

ふむふむ、ならば、部分セレクターは一括変更ができて、完全セレクターは一括変更できないのかもしれない。
2.実践
実際に手を動かすことで理解を深める。
変更が反映される範囲
「完全セレクターと部分セレクターのセレクターの変更が反映される範囲」を実際に試してみることで確認する。
【確認方法】
①同じウィンドウ上で複数の操作を行うフローを完全・部分セレクターでそれぞれ作成する。
②それぞれのセレクターのルートノードを変更してみる
③変更が反映されている範囲を確認
・完全セレクターの場合
ワークフローは、メモ帳のメニュー欄のファイル・書式・ヘルプを順にクリックするフローを「クリック」アクティビティのみで作成したもの。以下、画像。
はじめの「クリック」アクティビティのセレクターを確認。
ルートノードの属性titleの内容を変更する。
「無題」から「検証」に変更。

完全セレクターなら、この変更は他のアクティビティに引き継がれないよね。
2つ目の「クリック」アクティビティを見てみる。
変更は反映されていなかった。

ということは、やはり、完全セレクターでは1つ1つ変更しないといけないのか、めんどくないな。
・部分セレクターの場合
ワークフローは、メモ帳のメニュー欄のファイル・書式・ヘルプを順にクリックするフローをデスクトップレコーディングで作成したもの。以下、画像。
はじめの「クリック」アクティビティのセレクターを確認。
ここでは、ルートノードを編集できないようだ。
「クリック」アクティビティを囲っている「ウィンドウにアタッチ」アクティビティのセレクターを確認。
「ウィンドウにアタッチ」アクティビティでは、ルートノードを編集可能。
ルートノードの属性titleの内容の一部を変更する。変更箇所「無題」→「検証」
「クリック」アクティビティのセレクターを確認する。
はじめの「クリック」アクティビティでは、変更が反映されていた。
2つ目は……
2つ目も変更が反映されていた。

「ウィンドウにアタッチ」アクティビティがルートノードを管理しているイメージかな。
まとめると、
「ウィンドウにアタッチ」アクティビティがルートノードを管理、「ウィンドウにアタッチ」アクティビティの中の「GUI要素を操作する」アクティビティがルートノード以降のノードを管理する。
って感じかな。
3.まとめ
「部分セレクターと完全セレクターの変更が反映される範囲」に着目して、学習を行ってみた。今回セレクターについて理解したことを自分の言葉でまとめてみる。
・部分セレクターと完全セレクターは、変更の反映される範囲が異なる
・部分セレクターでのルートノードの変更は、下の階層に引き継がれる
・完全セレクターでのルートノードの変更は、引き継がれない

4.疑問
今回の学習で若干気になることがあったので書き留める。
疑問
デスクトップレコーディングでは、自動的に「ウィンドウにアタッチ」アクティビティが追加されることで部分セレクターとなった。これは、レコーディング機能すべてに共通の機能なのか。
コメント