【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開発 初級コース>レッスン一覧>セレクター
では、セレクター・動的セレクター・静的セレクターの説明文をそれぞれ見てみる。
セレクター
セレクターは、ユーザーインターフェイス内の特定のアクションを自動化するために、これらの UI 要素の属性を使用し、指定した要素までの「住所のようなもの」を自動生成したものです
引用元:https://academy.uipath.com/jp/learningpath-viewer/1954/1/153401/16
動的セレクター
※動的セレクターについては、UiPathドキュメントに詳細が記載されていたため、そちらを引用。
階層→UiPath Studio ガイド>セレクター>動的セレクター
動的セレクターは、ターゲットタグの属性のプロパティとして変数または引数を使用します。これにより、セレクターは、自動化プロジェクト内のやり取りに応じて変化する可能性がある正確な文字列ではなく、変数または引数の値に基づいてターゲット要素を簡単に特定できます。
引用元:https://docs.uipath.com/studio/lang-ja/docs/dynamic-selectors
※静的セレクターの説明文は見当たらなかったため割愛。

セレクターの説明文は、なんとなく理解できるけど、動的セレクターの説明文はさっぱりだ。セレクターを理解した上で動的セレクターを考えた方が良さそう。
よって、今回は、「セレクター」のみに絞って、復習していく。
水平的理解
以下の説明文を軸にセレクターを考えてみる。
セレクターは、……指定した要素までの「住所のようなもの」を自動生成したものです
引用元:https://academy.uipath.com/jp/learningpath-viewer/1954/1/153401/16

また、住所の階層をたどれば、ある程度の範囲をイメージできる。例えば、「沖縄県国頭郡国頭村宜名真61」という住所があった場合、国頭郡以降が分からなかったとしても、沖縄県のどこかにあることは分かる。
住所に階層構造があるように、セレクターにも階層構造があるのかもしれない。
セレクターの構造について調べてみた。以下、内容。
セレクターは次の構造を持っています。
<node_1/><node_2/>…<node_N/>
最後のノードは対象となる GUI 要素を表し、それより前のノードはすべてその要素の親を表します。<node_1> は通常、ルート ノードと呼ばれ、アプリケーションのトップ ウィンドウを表します。
引用元:https://docs.uipath.com/studio/lang-ja/docs/about-selectors

2.実践理解
実際に手を動かすことで理解を深める。
ルートノード<node_1/>を探す
「ルートノードはアプリケーションのトップウィンドウを指す。」
ルートノードのみセレクターに表示されるようにしてみる。
方法は、レコーディングでアプリケーションのトップウィンドウを取得する。
・メモ帳で
上記画像の部分にカーソルを合わせることでウィンドウを取得できた。
↑レコーディングで記録したフロー。
セレクターエディターを確認すると、ルートノードが表示されていた。

1つ1つ分解して見てみると、appとtitleはなんとなく分かるけど、clsはよく分からない。「ウィンドウにアタッチ」アクティビティに「Notepad」と記載があることを考慮すると、clsはウィンドウを示しているのかな。

このルートノードを変更することで、他のアプリケーションを操作できるのかな。
試みたところ、ルートノードの編集はできなかった。

セレクターを編集なのに、ルートノードの編集はできないのか。まさか、それ以降のノードも編集できないなんてことはないよね。
・ブラウザで
同様にルートノードを探す。
メモ帳のときと同じ項目で構成されたルートノードが表示された。あと、どこを取得しても2つ目のノードが表示されてしまう。

ルートノードの構成要素は、「app・cls・title」の3つと決まっているのかな。
・Twitterで
同様にルートノードを探す。
上記2つのルートノードの構成と違った。「cls」の代わりに「appid」という要素が使われていた。

ルートノードの構成要素は、すべてのアプリケーションで決まっているわけではないのか。
最後のノードを探す
「最後のノードは、対象となる GUI 要素を表す。」
レコーディングでGUI要素を取得する。
・メモ帳で
レコーディングでGUI要素をクリックする。
GUIとは
クリックしたGUI要素に対応する「最後のノード」が表示された。

クリックしたボタンに表示されているテキスト「ファイル(F)」が、最後のノードでは、「name=’ファイル(F)’」と表示されていた。ボタンのテキストがそのままname欄に記載されるのかな。
あと、「最後のノード」の構成要素は、「name・role」と決まっているのかな。

ルートノード以下のノードは、編集できるみたいだ。安心。安心。
・ブラウザで
同様に行ってみたが、うまくいかなかった。

次回、他のページで試してみよう。
・Twitterで
同様に最後のノードが表示されるようにレコーディングを行う。
最後のノードの構成要素は「name」と「role」だった。

構成要素は、メモ帳のときと同じみたいだ。だけど、nameの前についている「uia」は、メモ帳のときと異なるな。
そもそも、「nameやrole」、「uiaやwnd」のことをなんて言うのだろう。
調べてみた。

「uiaやwnd」はタグ、「nameやrole」は属性と言うらしい。
つまり、「1つのノードは1つのタグでできており、そのタグの中に複数の属性が入っている」ってことみたいだね。
で、「uia」ってなに?
調べてみたけど、、これであってるか自信ない。

Microsoft UI Automationを略して「UIA」。。。
「uia」ってタグがあることだけ知っておこう。
3.まとめ
セレクターの階層構造に着目して、学習を行ってみた。今回セレクターについて理解したことを自分の言葉でまとめてみる。
・セレクターは、ノードの階層構造で成り立っている。
・ノードは、複数の属性をまとめる1つのタグで成り立っている。
・ルートノードは、編集できないノードである

コメント