セレクターの意味及び安定性について

UiPath Studio Enterprise Edisionを使って仕事でワークフロー開発しています。
市販のUiPath本を読んでも書いていなかったのでセレクターについて2点教えてください。

1.name、idxについては意味が分かるのですが、下記属性の意味が分からないので教えてください。

title ウィンドウのタイトル名を文字列で取得?
cls 親ウィンドウの中の子ウィンドウタイトル名を文字列で取得?
role 不明
automationid 不明

2.1.で説明した属性の安定性を教えてください。(操作対象画面が変更になっても耐えられるかかどうか)name属性はnameが変わらない限り安定している、idx属性は不安定なことは分かっていますが、他の属性は不明です。

Hello @gorby
327 / 5,000

こんにちは、IDX は要素の数または位置です。 たとえば、e コマース Web サイトからデータをスクラップする場合、1 番目のデータ IDX は 1 で、2 番目のデータ IDX は 2 の同じ連続した… 名前は要素に基づいています。ある製品名に Pen があり、別の製品名に Note がある場合。 要素とその位置に基づいて、IDX と名前が変更されます。

回答ありがとう!roleなど他の属性も教えて下さい。

roleは下記に詳しいことが書いてありますよ。

clsはWNDのclsのことであればこれのことです。

automationIDはよくわからないですねー。

回答ありがとうございます!ちなみにtitleとはウィンドウ名のことでしょうか?

これについては、共有いただいた資料を読みましたが、どこに書いてあるのかさっぱり分かりませんでした。

clsはWindowクラス名のことで、Window クラスについては下記に書いてあります。

先程渡したのはこれをWin32APIで取得する場合のコマンドですね。

titleはウィンドウのタイトルテキストですね。
基本的は添付ファイルのハコでくくった部分と一緒になるはずですが、例外はあるかもしれません。


ちなみにウィンドウがなにかは下記ページがMicrosoftの公式ドキュメントです。リンク辿ってくといろいろわかると思います。

Windowクラスは分かりにくいですが、OSがWindowを作成するための属性と捉えればよいでしょうか?

Windowの種類みたいなもんですね。
wndタグは必ずclsを持つので、いくつかのボタンとかテキストフィールドで値を確認するとなんとなくわかるかもしれません。

セレクターのノード、タグ、アトリビュートを正しく理解したら安定性云々ってあんまり気にならない気もするんですが、まぁ、細かい変更(ボタンの大きさの変更とか)は耐えられるけど、
抜本的な変更には耐えられない感じですよね。

抜本的な変更がかかる可能性があるものについてはAPI連携できるといいですよね。

何度も質問して申し訳有りませんがstateというセレクタも有りました。これの安定性はいかがでしょうか?name属性が比較的安定しているのは理解しております。

一個一個五月雨式に追加して聞くのはちょっと困ります。
網羅的じゃないですが、リストはここにあります。全部一個一個安定性を私に聞かないでください、わからないです。

安定性を定義していきましょうか。
「アプリケーションを再起動しても値が一緒」「パソコンを再起動しても値が一緒」
だったらRPA的には十分安定してるんじゃないでしょうか。そういう意味では検証可能ですので検証していただければと思います。
それ以上の安定ってあんまり求められなくて、「name」だってアプリケーションの開発者が変えたいって思ったら変わりますし、開発者は全部変えれちゃいますよね。そういう意味での不安定さRPAの弱点ですね。UiPathはセレクターの「あいまい一致」をできるようにしてるので、少しでも不安定さを克服しようと努力してますが。

ちなみに僕が適当にとったUIのaastateの値はread onlyだったので、これってなんかセレクターの一部として使うような値には思えないんですよね。

フォーラムの誰だかわからない人が「安定してます」って言ったら納得するみたいな話じゃないと思うので、理屈で安定を考えた方がいいと思うんですよね。

なので、それぞれ検証してどんな値が入ってて、どういう意味を持つのか仮説を立てるのがいいと思いますよ。セレクターを実現してる技術としてはUI AutomationやActive AccessibilityなどのアクセシビリティAPIをコールしてボタンの属性をとってきてて、その属性で検索のような物を画面上にかけて、一致したボタンとかを操作する感じです。

安定性の定義が一致していませんでしたね。私が気にしているのは、要素のボタンやウィンドウのサイズや配置、色の変更にどれだけロボットが耐えられるかです。この観点からname属性やtitle属性は比較的安定性が高いと推測しています。他の属性の安定性が不明のため質問をさせていただきました。

いや、僕はもともと安定性を定義していないんで一致も何もないと思います。あくまでさっきあげたのは例です。Gorbyさんにとって意味のある安定性を定義してほしいって言ったってことですね。

gorbyさんの気にしているポイントの色、座標はそもそもセレクターに含まれてないですね。colorって名前の属性はないし、値の中身がorangeとかyellowのものもありません。
座標と大きさはpositionというProperty Explorer内(前回の添付画像左下)にありますが、こちらもセレクターの要素じゃないです。
gorbyさんのいう安定性というのが「色にかかわると低い、座標にかかわると低い」という意味で、「色座標に関わらないのであれば高い」なのであれば、
positionとcolor以外のすべての属性が、座標にも色にも関係ないので安定性が高い属性になると思いますよ。
色と座標はあくまで特定のGUIパーツの一つの属性で、セレクターの各Attributeはそれぞれ属性で、
開発者変更しようと思えば変更できる物です。どの属性も変更できます。

全部の属性について僕に解説を期待するのは酷だと思いませんか?それはGUIについての本にかかれている中の10ページ分ぐらいを解説してほしいって言ってるような物です。
なのでそれぞれの属性が何なのか推測して、それがgorbyさんにとっての安定性に関係あるか考えてもらえればと思います。
推測方法についても調査方法についても提示しました。
いかがでしょうか。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.