
レコーディング機能でサクサク自動化していても正しく画面が取得できなかったり、UiPathが画面を見つけられずエラーになったりすることがあると思います。
基本的にはセレクタが原因であることが多いのですが、セレクタというのはあまり馴染みがないため初めのうちは苦労すると思います。
今回はセレクタについて基本的な内容を理解していきましょう。
Contents
セレクタとは
セレクタとは、UiPath Studioがウインドウやボタンなどの要素を特定するための文字列のことです。
セレクタは上から順に階層形式になっており親子関係を表しています。
<wnd app='notepad.exe' cls='Notepad' title='無題 - メモ帳' />
<wnd cls='Edit' />
<ctrl role='editable text' />
これはメモ帳の入力部分をセレクタで表したものになります。
1行目が対象アプリケーション(メモ帳)のウインドウを表しており、2行目以降でメモ帳内の要素を指定しています。
デスクトップアプリケーションでもWebアプリケーションでも、UiPath Studioは主にこのセレクタを利用して画面や要素の位置を判断しています。
またセレクタを自作することは現実的ではないため、自動設定されるセレクタを利用(修正)するかUiExploreから取得しましょう。
セレクタの使い方
セレクタの設定方法
「Type Into」などのアクティビティを配置した際に表示される「indicate on screen」からボタンなどの要素を指定することでUiPath Studioが自動で設定してくれます。
またUiExploreからセレクタを取得することもできます。UiExploreの詳しい使い方については別記事にします。
セレクタの確認と編集
プロパティパネルのTarget→Selectorからセレクタの確認や編集ができます。
要素の編集(Edit Attributes)
チェックボックスをOFFにすると、対象の箇所に「omit:」が追加されその箇所は無視されます。また各要素の名称をクリックすると内容を編集することができます。
セレクタの編集(Edit Selector)
こちらはセレクタの形式から内容の削除や追加が可能です。実際にこの部分がアクティビティで使用するセレクタになります。
セレクタのアップデート(Attach to Live Element)
アクティビティから自動でセレクタを設定しても正常に動作しない場合があります。このような場合は、セレクタ内容のアップデートをしてあげる必要があります。
どのような時にアップデートが必要かというと、同じメモ帳でもファイル名によってセレクタの内容は変化します。下記に例を示すと、
例)
メモ帳初回起動時のセレクタ1行目
<wnd app='notepad.exe' cls='Notepad' title='無題 - メモ帳' />
名前を付けて保存後のセレクタ1行目
<wnd app='notepad.exe' cls='Notepad' title='test.txt - メモ帳' />
初回起動時は、1行目のタイトルが、「無題 – メモ帳」であるのに対し、名前を付けて保存した後は「test.txt – メモ帳」になっています。
通常メモ帳を新規に作成した場合は、「無題 – メモ帳」であるため、セレクタにこの名称を指定していると、UiPath Studioは画面を見つけることができずエラーとなります。
このような時のために、セレクタのアップデート機能である「Attach to Live Element」があります。
「Attach to Live Element」は、旧セレクタと新セレクタを比較し、必要に応じて内容をアップデートし正常に動作するようにセレクタの内容を自動で修正してくれます。
次の例で確認してみましょう。
無題のメモ帳と、test.txtのメモ帳2つを用意して、初めは無題の方のメモ帳でセレクタを作成します。
その後、「Attach to Live Element」からtest.txtの入力部を指定します。
すると、「Selector was updated to match the live element.」と表示されセレクタがアップデートされます。
セレクタのアップデート後は次のようになっています。
<wnd app='notepad.exe' cls='Notepad' title='* - メモ帳' />
1行目の内容を見てみると、title部が、「* – メモ帳」となっていることが分かると思います。
これはUiPathが、メモ帳のファイル名が無題からtest.txtに変化したことを受けて該当箇所をアスタリスクに置き換えてくれたのです。
ちなみにアスタリスクは、この場所には何の文字でも入る可能性がある(何文字でも)という意味で、これにより、タイトルが無題であろうと、test.txtであろうとUiPath Studioは判断できるようになります。
またアスタリスクに似たものとして「?」があり、これも同様に何の文字でも入る可能性があるという意味ですが、対象の文字数は1文字だけという違いがあります。
つまり、ファイル名が「test.txt – メモ帳」であった場合、「? – メモ帳」では動作しませんが、「???????? – メモ帳」であれば正常に動作します。
ファイル名「test.txt – メモ帳」
・動作する
<wnd app='notepad.exe' cls='Notepad' title='* - メモ帳' />
もしくは
<wnd app='notepad.exe' cls='Notepad' title='???????? - メモ帳' />
・動作しない
<wnd app='notepad.exe' cls='Notepad' title='? - メモ帳' />
UiPath Studioにどちらのウインドウかを判断させる
2つのメモ帳ウインドウが画面上に存在する場合に、期待する方のウインドウに正しく入力できるか確認してみましょう。
1つはメモ帳を新規に起動した状態のままの「無題 – メモ帳」と、もう1つは先程作成した「test.txt – メモ帳」の2つを画面上に表示しておきます。
「Type Into」アクティビティでメモ帳の文字入力部分を選択し、セレクタの「title」は「test.txt – メモ帳」を指定しておきます。
この状態でType Intoアクティビティに「テスト」と入力させると、たとえ無題のメモ帳にカーソルが当たっていても、testのメモ帳に入力されることが分かると思います。
なおセレクタを「* – メモ帳」で指定した場合は、UiPath Studioはどちらのウインドウか判断できないため、エラーは発生しませんがカーソルが当たっている方のメモ帳に文字が入力されることを覚えておきましょう。
まとめ
UiPath Studioではほとんどのアクティビティでセレクタを使用しています。
自動化したい操作が画面上に正しく反映されない場合や、動作がエラーとなってしまう場合はまずセレクタを疑ってみましょう。
次回はセレクタ作成ように準備されているUiExploreについて解説します。