โ† Back to all tools
๐ŸŽฏ

UiPath Selector Inspector

Paste a selector to see what will break it, get a stability score and a more robust version โ€” runs locally in your browser

โ€“
๐Ÿ”’ Everything runs locally in your browser. Selectors often contain internal system names and are never sent anywhere.

Anatomy of a UiPath selector

<html app='chrome.exe' title='Invoices - *' /> โ† root: which window <webctrl tag='INPUT' aaname='Search' /> โ† target: which element inside it

A selector is a chain of XML-like tags. The first tag identifies the application window (html for browsers, wnd for desktop, sap, java, uia) and each following tag narrows down to the element. UiPath matches every attribute exactly unless you use * (any characters), ? (one character), a variable such as {{invoiceNo}}, or fuzzy matching. A full selector starts at the window; a partial selector starts at an element and relies on the container activity (Attach Window, Attach Browser, Use Application/Browser) for the root.

What makes a selector break

AttributeWhy it breaksWhat to do instead
idx='3'Position-based. Any new row, button or banner shifts the index.Find a distinguishing attribute (aaname, name, type) or use an Anchor Base / Find Element with a nearby label.
id='ctl00_txt_4821'Generated by the framework on every render or deploy.Keep the stable prefix and wildcard the rest: id='ctl00_txt_*'.
class='css-1x9k2ab'Hashed CSS-in-JS class, changes on every build.Drop it; rely on tag, aaname, type or parentid.
title='Report_2026.xlsx - Excel'Contains a filename, date or count that changes per run.title='* - Excel' or a variable: title='{{fileName}} - Excel'.
url='https://app/x?page=3'Query strings and session ids change constantly.url='*app/x*' or omit url and keep title.
cls='WindowsForms10.Window.8.app.0.2bf8098'WinForms class names embed a hash that changes with the .NET version.cls='WindowsForms10.Window.8.app.*'
aaname='Total: 1.234,50 kr'Live data in the text; also breaks when the UI language changes.aaname='Total:*', or match on a label and use Get Text on the value.

Activities where this matters

  • Click, Type Into, Get Text: the target selector; the classic "Selector not found" error comes from here.
  • Element Exists / Check App State: intentionally loose selectors with wildcards to detect a page or dialog.
  • Anchor Base / Find Element / Relative selectors: locate an element through a stable neighbour when its own attributes are dynamic.
  • Attach Browser / Use Application: the container holds the root; children can then use partial selectors.
  • UI Explorer: validate the suggested selector there; the Validate button tells you whether it matches exactly one element.