はじめに
PAD(Power Automate for Desktop)では画面上のアイテムを「UI要素」と呼ぶ。
このUI要素を触ってみて理解できたことを書き連ねていく。
UI要素の種類
PADには「Web UI」と「デスクトップUI」の2種類のUI要素がある。(Microsoft UI要素を使用して自動化する)
ブラウザー自動化とUIオートメーションの違いは何か
PADのアクションにはブラウザ―自動化とUIオートメーションのグループがあり、ブラウザー自動化の中にあるアクションでは「Web UI」の記録ができ、
UIオートメーションの中にあるアクションでは「デスクトップ UI」の記録ができる。
例えば、「Webページのリンクをクリック」はWeb UI、「ウィンドウのUI要素をクリック」はデスクトップ UIである。
それぞれどのような違いあるか比較する。
記録可能領域の違い
Web UIでは、ブラウザのWebページ上の要素しか記録することができない。
ブラウザーのタブやURL バーを選択することができない。
デスクトップ UIは語弊を恐れずにいうのであれば何でも記録できる。
例えば、
- ブラウザのタブ、URLバー
- デスクトップ上のアイコン
- Webブラウザ以外のデスクトップアプリ(Steam、メモ帳 など)
- 名前を付けて保存のダイアログ
- Windowsのタスクバー
- Webページの要素
デスクトップ UIといいつつWebページの要素も記録することができる。
Web UIの完全上位互換と言えるかもしれない。
記録されるセレクターの違い
デスクトップ UIでもWebページ上の要素を記録できると直前に書いている。
では、それぞれどのように記録されるかを確認しよう。
Kintoneで、アップロードするファイルを選択する「参照」ボタンをUI要素として記録する。
Web セレクター
HTMLのDOMツリーと同じ構造で、Bodyタグから末端のタグまで、1つのタグを1つのセレクターとして14個記録されている。
属性名はcssと同じであり、普段からcss, jsを触っていれば理解に難くない。
デスクトップセレクター
Web UIと比べ、セレクターの数がずいぶん少ない。
デスクトップセレクターで使用できる属性について、Microsoftの公式HPに記載はない。
有償版visual studioの「spy++」やフリーサイトの「winspector(現在ではダウンロードできない)」では、デスクトップアプリのUI情報を取得できるとのこと。
また、その仕組みとしてはWinAPIの操作によるものと思われる。(実際、画面サイズはhwndを指定すれば取得できる)
セレクターの件に戻り、こちらも憶測になるが
(1) Name属性がタブ名と一致しているため、タブの絞り込みを行っている。
(2) ボタンを表すセレクタはWeb UIとさほど変わらない。IDもWeb セレクターと同じものが保存されている。
(3) プレビューのセレクターの末尾が「 > text」となっている、おそらくhtmlのinnerTextとおなじと思われる。
「Web UI」と「デスクトップ UI」の使い分け
Web上の操作ということであれば、Web UI一択である。
理由は可読性が上がるため。
クリック処理を全て「デスクトップUI > ウィンドウのUI要素をクリック」で統一した場合、それがWeb上での操作であるか否かが判別つかない。
ブラウザ―自動化におけるリンクとボタンの使い分け
ブラウザー自動化には似たようなアクションがある。
- 「Webページのボタンを押します」
- 「Webページのリンクをクリック」
- 「Webページのダウンロード リンクをクリック」
まず、3.「Webページのダウンロード リンクをクリック」は使用不可である。
実行してみると、『Chromeを使用したファイルのダウンロードはサポートされていません。オートメーションブラウザーの使用を検討してください。』というエラーになる。
公式HPでは見当たらなかったが、このアクションはInternet Explorer(Edgeではない)でしか利用できないとのこと。
続いて、1. 2.だが最近のHPでは見た目をリッチにするために見た目がボタンのリンクがたくさんある。
そのため、実際HTMLがボタンタグであるかアンカータグであるかの区別なんてつかない。
とりあえず、アクションを実行すると、1. 2.のいずれもリンク、ボタンをクリックすることができる。
というより、クリックする要素がなんであるかの判断をPADは行っていない。
例えば1.のアクションでテキストボックスをUI要素に選択するとテキストボックスがクリックされ、focus状態になる。
『UI要素はボタンではありません。』なんてエラーは表示されない。
さらに踏み込むと、「Webページのラジオボタンを選択します」でリンクをクリックすることもできるし、「Webページのリンクをクリック」でラジオボタンを選択することもできる。
つまり、ブラウザー自動化ではUI セレクターが正しく指定されていれば処理を進めてしまうということが分かる。
実際は見た目に合わせて使い分けるのが一番良いと思う。
見た目がボタンであれば1. を、リンクであれば2. を利用したい。
UI要素とROBIN言語
コードの確認
PAD上でUI要素を記録すると、何かしらのROBIN言語で書かれたコードが作成される。
「ウィンドウのUI要素をクリック」のアクションをメモ帳に張り付けてROBINコードを確認する。
非常に長いコードである。理由はUI要素を記録する際に画像がScreenShot属性に格納されるため。
困ることとしては、当サイト上でROBINコードの公開がしづらいということ。
Screen Shotは削除できるか
できる。ScreenShot属性の文字列を削除し、再度テキストからPADへ貼り付けをすればよい。
もちろん、削除範囲を間違えると誤作動のもとになるし、何より手間である。
原則、ROBINコードをいじるのはやめよう。
まとめ
- Webページ上の操作は「ブラウザ―自動化」、それ以外は「UIオートメーション」からアクションを選択すること。
- ボタンクリックとリンククリックのアクションはWebページ上の見た目により使い分けること。
- UI要素にはスクリーンショットが合わせて保存されるが、無理に削除することはない。(ROBINコードはいじらないこと)