やりたかったこと
Power Automate Desktop(以降、PAD)を使ってWEBブラウザの自動操作を行いたい。
テキストボックスに値を入力したかったため、Webコントロールを取得して、「Webページ内のテキストフィールドに入力する」アクションを指定。
実行してみると、要素が取得できないというエラーが発生。
よくよく見てみると、自動操作したかったサイトでは、入力コントロールのHTMLのidが表示の度にランダムに変更されている模様。
PADの要素認識で当該idを使っているため、毎回変わるたびに「そんな要素見つからないよ」と言われてしまっているようです。
セレクターを変更してみる
そんな時に便利そうなのが、セレクターです。
PADが要素を取得する条件(セレクター)を調整することで、idを無視するとかができる。
セレクタービルダーを開く
UI要素ペインを開き、問題の要素の三点リーダーから、「セレクターの編集」を選ぶ。


さらに、三点リーダーから「セレクターの編集」を選ぶ。


すると、このようなセレクタービルダーの画面が開く。

セレクターを更新する
今回の上の画像では、サンプルで電卓の要素を取得してみましたが、これがHTML要素だと、左側の「セレクター」が階層で表現されています。
一番下の階層を選択して、右側の属性「Id」のチェックを外せば、idを無視して要素を取得することができます。
ここはブラウザの開発者モードなんかを見ながら、HTMLの階層を理解した上でやるとスムーズでした。
最後に「更新」ボタンを押すのを忘れず。
セレクターの条件に合致する要素が複数取得できてしまう場合の対処方法
上の方法で、idを無視することはできました。
が、もう一つ問題が。。
idの条件を外すと、同じ条件でテキストボックスが複数とれてしまいます。
この場合、最初に登場する要素が操作対象になるっぽい。(不確か)
サイトの作り的に、他のセレクターを操作しようが複数とれちゃうことは変わらず。
添え字を利用して要素を取得できないかと探してみたところ、見つけました。
div[Class=’sample’]:eq(0)
重要なのは、:eq(0)のところ。
0始まりの添え字で要素を取得できるようです。
無事要素を取得できました~。
コメント