UiPathでWebやデスクトップアプリを自動操作する際に欠かせないのが「セレクター(Selector)」です。
セレクターを理解しないまま自動化を進めると、「実行時エラー」や「要素が見つかりません」といったトラブルが頻発します。
この記事では、UiPathのセレクターの仕組みから安定化のコツ、そして実務での注意点まで、徹底的に解説します。
目次
- ✅ セレクターとは?UiPath自動化の基礎となる仕組み
- ・セレクターの基本概念
- ・セレクターの構成要素
- ✅ セレクターの種類と使い分け
- ・完全セレクターと部分セレクター
- ・動的セレクター
- ✅ セレクターが安定しない原因と対処法
- ・原因①:動的要素の変化
- ・原因②:ウィンドウタイトルの違い
- ・原因③:アプリやブラウザの更新
- ✅ セレクターの安定化テクニック
- ・ワイルドカードの効果的な使い方
- ・変数の埋め込み
- ・アンカー要素を使う
- ・UI Explorerでの分析
- ✅ 実務で使えるセレクター最適化のコツ
- ・共通フレームを前提に設計する
- ・Modern Experienceの活用
- ・検証ループでエラーを早期発見
- ✅ セレクターエラーの代表例と解決方法
- ・「Cannot find the UI element corresponding to this selector」
- ・「The UI element is no longer valid」
- ・「Selector not found」エラーが断続的に出る場合
- ✅ まとめ:セレクターを制する者がUiPathを制す
✅ セレクターとは?UiPath自動化の基礎となる仕組み
・セレクターの基本概念
セレクターとは、UiPathが画面上の特定の要素(ボタン・テキスト・入力欄など)を識別するためのXML構文のことです。
簡単に言えば、「このボタンをクリックする」「この欄に入力する」といった対象を指定する“住所”のようなものです。
UiPathは内部的に、WindowsのUI Automationフレームワークを利用して対象要素を検出します。
セレクターを正しく指定することで、安定して操作対象を見つけ出し、確実に自動化を実行できるようになります。
・セレクターの構成要素
セレクターはXML形式で構成され、一般的には以下のような形をしています。
<wnd app='chrome.exe' cls='Chrome_WidgetWin_1' title='ChatGPT - Google Chrome'/>
<ctrl name='Send' role='push button'/>
この例では、ウィンドウアプリ(chrome.exe)の中にある「Send」ボタンを特定しています。
app
はアプリ名、cls
はウィンドウクラス、title
はウィンドウタイトル、name
は要素名を示します。
UiPathはこれらの属性を組み合わせて、一意に要素を特定します。
✅ セレクターの種類と使い分け
・完全セレクターと部分セレクター
UiPathには、完全セレクター(Full Selector) と 部分セレクター(Partial Selector) の2種類があります。
- 完全セレクター
アプリケーションのウィンドウ階層から要素まで、すべての情報を含んでいます。
例:<wnd app='notepad.exe' cls='Notepad' title='無題 - メモ帳'/> <ctrl name='テキスト エディット' role='editable text'/>
主に「Attach Window」などで囲まれていない場合に自動生成されます。
- 部分セレクター
親ウィンドウ(例:Attach WindowやAttach Browser)を前提とし、要素部分のみを記述します。
例:<ctrl name='保存' role='push button'/>
部分セレクターは再利用性が高く、処理スピードも向上します。
・動的セレクター
画面上の要素が毎回変わる場合(例:IDやタイトルに日時が含まれる)には、動的セレクターが必要です。
固定値を使うとエラーが出やすくなるため、可変部分をワイルドカードや変数で表現します。
例:
<wnd title='Report_*'/>
または
<wnd title='Report_' + reportDate.ToString("yyyyMMdd") + "'/>
このように設定することで、毎回異なるタイトルでも柔軟に対応できます。
✅ セレクターが安定しない原因と対処法
・原因①:動的要素の変化
Webページやアプリによっては、IDやタイトルが実行のたびに変化する場合があります。
例えば、「input_12345」「input_67890」といったIDが毎回異なると、固定セレクターでは要素を認識できません。
対処法:
- ワイルドカード(
*
や?
)を活用する - 変数や正規表現を組み込む
- 「アンカーベース」や「UIフレームワーク(Modern Experience)」を利用して位置情報で補強する
・原因②:ウィンドウタイトルの違い
同じアプリでも、タイトルが動的に変わることがあります。
(例:「請求書管理システム - ユーザーA」「請求書管理システム - ユーザーB」)
対処法:
- タイトル部分を
title='請求書管理システム*'
のように部分一致で指定 - 可能であれば、上位階層を省略してより安定した構造にする
・原因③:アプリやブラウザの更新
ブラウザやアプリのUIが更新されると、セレクター構造が変化し、以前の設定では動作しなくなることがあります。
対処法:
- 「修復(Repair)」機能で再取得する
- 「UI Explorer」で階層構造を確認し、安定した属性を選定
- UIフレームワークの切り替え(Default/Active Accessibility/UIA)を試す
✅ セレクターの安定化テクニック
・ワイルドカードの効果的な使い方
セレクター内で一部が変動する場合には、*
または ?
を使って柔軟に指定します。
例:
<wnd title='Excel*'/>
このようにすれば、ファイル名が異なっても「Excel」という文字列が含まれていれば検出可能です。
ただし、ワイルドカードを多用しすぎると誤検出のリスクもあるため、
変化する部分だけに限定して使うことがポイントです。
・変数の埋め込み
動的に変わる値をVBAのように変数で指定することも可能です。
例えば、動的に変わる日付付きウィンドウを検出する場合:
"<wnd title='売上レポート_" + Today.ToString("yyyyMMdd") + "'/>"
このように書けば、日付部分が自動で変化し、安定した動作を実現します。
・アンカー要素を使う
UIが頻繁に変わる画面では、要素単体を特定するのが難しい場合があります。
その場合は、固定要素(ラベルやタイトル)をアンカーとして指定し、
「このテキストの右にあるボタン」といった相対位置で安定的に取得するのが有効です。
・UI Explorerでの分析
セレクターの品質を高める上で欠かせないのが「UI Explorer」です。
UI Explorerを使うと、要素階層・属性の一覧・検証機能などを確認でき、
どの属性が安定しているかを視覚的に判断できます。
特に注目すべきポイントは以下の3つです:
- 可変属性(id, nameなど)は除外する
- 一意で変化しない属性(class, roleなど)を残す
- 「Validate」ボタンでセレクターの有効性を確認する
✅ 実務で使えるセレクター最適化のコツ
・共通フレームを前提に設計する
同じアプリを複数画面で操作する場合、「Attach Window」や「Attach Browser」を活用して共通化することで、
セレクターの再利用性が高まり、保守性が向上します。
これにより、画面構成が多少変わっても影響を最小限に抑えられます。
・Modern Experienceの活用
UiPathの最新版では「Modern Experience」という新しいUIフレームワークが採用されています。
従来よりも直感的な要素選択が可能で、セレクターも自動で最適化されます。
特に「ターゲット」+「アンカー」の組み合わせや、「Fuzzy Selector(あいまい検出)」が導入され、
微妙な変化にも強い安定した動作を実現します。
・検証ループでエラーを早期発見
自動化を本番実行する前に、セレクターが常に認識できるかを「検証ループ」で確認しておくことが重要です。
For Eachで一定回数繰り返し、「要素が見つからなければログ出力」などを行うことで、
後のエラー発生を防げます。
✅ セレクターエラーの代表例と解決方法
・「Cannot find the UI element corresponding to this selector」
最も一般的なエラーで、「指定した要素が見つからない」ことを示します。
原因としては、ウィンドウのタイトル変化や要素の非表示状態などが挙げられます。
解決策:
- セレクターの検証を行う
- 一時的な待機(DelayまたはElement Exists)を挿入
- 動的セレクターへの変更を検討
・「The UI element is no longer valid」
一度取得した要素が、DOM変更や再描画によって無効になった状態です。
解決策:
- 操作直前で要素を再取得する
- 「Find Element」や「Attach Window」で再スキャンする
・「Selector not found」エラーが断続的に出る場合
アプリの読み込み速度やネットワーク遅延による要素未検出のケースも多いです。
Wait for Ready プロパティを「COMPLETE」に設定することで、完全に読み込みが終わるまで待機させると安定します。
✅ まとめ:セレクターを制する者がUiPathを制す
- セレクターは要素を特定するための“住所”であり、自動化の成否を左右する
- 動的セレクターやアンカーの活用で、変化に強いワークフローを構築できる
- UI Explorerを使って安定属性を分析し、ワイルドカードを適切に使う
- Modern Experienceを活用すれば、より簡単かつ高精度なセレクター設定が可能
セレクターの理解と安定化は、UiPath開発者としてのスキルを一段上に引き上げる重要なステップです。
もし「動作が不安定」「要素が見つからない」と悩んでいるなら、今回紹介したコツを一つずつ実践してみてください。
きっと、自動化の精度と効率が劇的に向上するはずです。