Desktop Recording
Desktop recording uses the Windows UI Automation (UIA3) framework — via FlaUI — to identify every element you interact with and generate structured XML selectors. It works with any Windows application that exposes accessibility information.
Supported Application Types
| Framework | Examples | Notes |
|---|---|---|
| Win32 | Notepad, Calculator, legacy ERP systems | Full UIA3 support |
| WPF | Modern .NET desktop apps | Best AutomationId coverage |
| WinForms | .NET WinForms apps | Good support; use Name when AutomationId is missing |
| UWP | Windows Store apps, Settings | Auto-detected via ApplicationFrameWindow; requires accessibility enabled |
| Electron / Chromium | VS Code, Slack, Discord | Auto-triggers accessibility init on first hover; then full UIA tree is available |
| SAP GUI | SAP desktop client | Requires SAP Scripting API enabled on server |
Desktop Recording Steps
- In Studio, click Record → Desktop
- The Recording Indicator appears — hover over the target application
- Click on the first element you want to automate — a selector is captured for it
- Continue performing actions; each is added to the recording list in real time
- Press Shift+F2 or click Stop to finish
- Activities are inserted on the canvas inside a Use Application Browser container scoped to the detected process
How Selectors Are Generated
For each captured element, the recorder:
- Walks the UIA tree from the clicked element up to the window root — collecting one
ElementInfoper level - Filters out noise containers (generic Pane, Custom, Group without meaningful identifiers)
- Selects the best attribute at each level:
automationid→controltype→name→idx - Limits the chain to 4–5 segments to avoid over-specificity
- For Electron/Chromium apps, appends a
webctrlsegment with the DOM element attributes
Electron / VS Code appsElectron apps use a Chromium core with an accessibility bridge. On first hover, Studio sends an accessibility enable command to the process. After a short delay (1–2 seconds), the full UIA tree becomes available and element capture works normally.