皆さんはDAロボットを開発する際にエレメントツリーを活用して
ロボット開発されていますでしょうか?
思った箇所をクリックしに行ってくれない、、
などの状況に陥った際の原因の1つに
コンポーネントの指定が上手くいっていないことが挙げられます。
その場合、エレメントツリーを確認し適当な設定に修正する必要があります。
エレメントツリーの活用はDAロボット作成のポイントになる部分でもありますので
今回はエレメントツリーについてご説明できればと思います。
※ver11.4を使用して説明します
エレメントツリーとは
エレメントツリーとは
DAによってWindowsのデスクトップアプリケーションを自動化する際に、
画面構成情報を解析して表示したツリー構造の情報のことです。※1
実際の開発画面でいいますとこの赤枠で囲われた部分に表示されている
情報のことを指しています。
「+」を押すことでも詳細を見ることができますが、
クリックしたいボタンや記入したい箇所がある場合はその要素をレコーダービュー上で選択すると
自動でエレメントツリー上でも該当箇所が選択され、詳細を見ることができます。
エレメントツリーの一番上にはアプリケーション名が記載されています
上記の様にレコーダービュー上で該当箇所を選択しステップを作成した場合、
ステップのコンポーネントはロボット側が自動的に生成してくれます。
しかし、この自動生成が場合によってはエラーを引き起こす原因になる可能性があります。
エレメントツリーの活用例
【エラー発生例】
「一番上の申請者をクリックする」という仕組みを作りたいため、
作成時に一番上にあったAさんの申請者番号「001」部分をクリックし
クリックステップを作成。
しかし、実際にロボットを稼働させると想定していた動きにならなかった。
【原因】
申請者クリックステップのコンポーネントが「○○項目[name=”001”]」となっており、
Aさん以外の申請者の処理で不具合が発生。
※申請者番号「002」のBさんが一番上の申請者となった場合
ロボットは「○○項目[name=”001”]」の要素を探しに行きますが
Bさんは「○○項目[name=”002”]」のためクリックされず、
Aさんが申請者にいた場合はAさんをクリックしに行ってしまい、
Aさんがいない場合は該当するコンポーネントが無いためエラーが発生してしまいます。
【解決法】
この場合は、変動的な「name属性」で指定するのではなく
「[○○項目]エレメントの1番目」という指定の仕方をとる必要があります。
そこで活用するのがエレメントツリーです。
該当箇所をレコーダービュー上でクリックし、エレメントツリーで緑に囲われた部分を確認してみましょう。
属性の中に「automationId=”1”」のような1番目の申請者は「1」、2番目の申請者は「2」
と順番に対応した属性がある場合はその属性をコンポーネントとして用いましょう。
もしくは、エレメントツリーで緑に囲われている該当箇所を右クリックし
コンポーネントセレクターのコピー > フルパスコンポーネントセレクターのコピー を選択。
すると、該当箇所のフルパスが取得できるため、
取得して値(例:ウィンドウ > ○○ > ○○ > ○○項目:nth-of-type(1))をコンポーネントに張り付けましょう。
※「エレメント名:nth-of-type(n)」は、該当エレメントのn番目のエレメントを指定します
例)ウィンドウ > メニュー_バー > メニュー項目:nth-of-type(3)は
メニュー_バー直下のメニュー項目の3番目を指定する
作成するロボットによって、どのようなコンポーネントの指定方法が
やりたい動きを反映できるか、安定的か、は異なるため
何度か試してみて最善の指定方法を見つけていきましょう!
参考サイト
※1 BizRobo!ナレッジベース 用語集 エレメントツリー
https://knowledge.bizrobo.com/hc/ja/articles/360028390531