Power Automate DesktopでHTMLのidが可変である要素を取得する

調べたこと・分かったこと

やりたかったこと

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始まりの添え字で要素を取得できるようです。

無事要素を取得できました~。

コメント

タイトルとURLをコピーしました