---
title: UI Automation
description: Automate UI interactions
---

Click, type, select, scroll and check things on the active tab, step by step, from a list of actions you build or record.

## What it does

UI Automation runs the actions in **Actions** one after the other on the active tab. For each action it:

1. waits for the **Target Element** to appear, up to **Wait timeout** (2,000 ms by default). If it never appears, that action is skipped and the next one runs;
2. scrolls the element into view and shows a small label on it, so you can see what is happening;
3. performs the action.

Actions are paced at about two seconds apart, so pages have time to react. The incoming item is passed on unchanged when the list is done.

### Available actions

| Action | What it does | Extra settings |
| --- | --- | --- |
| **Click**, **Double Click**, **Right Click** | Click the element. | |
| **Type** | Put text in a field, replacing what is there, or adding to it when append is on. | Text, append |
| **Clear** | Empty a text field. | |
| **Check**, **Uncheck** | Tick or untick a checkbox or radio button. | |
| **Select** | Choose an option in a drop-down list. | **Value** (suggests the list's options) |
| **Hover** | Move the pointer over the element, for menus that open on hover. | |
| **Focus**, **Blur** | Put the cursor in the element, or take it out. | |
| **Key Press** | Press a key, with optional modifiers. | **Key** (`Enter`, `Escape`, `Tab`, `a`…), **Ctrl**, **Shift**, **Alt**, **Meta** |
| **Scroll Into View** | Scroll until the element is visible. | |
| **Scroll To** | Scroll the page to a position. | x, y |
| **Trigger** | Send a page event to the element. | **Event Name** (with suggestions) |
| **Drag & Drop** | Drag the element onto another one. | a second **Target Element**: where to drop |
| **Press & Hold** | Press and hold on the element. | **Hold (ms)** |
| **Wait For Element** | Wait until the element is visible, present (attached) or gone (detached), up to **Wait timeout**. | **State** |
| **Wait Delay** | Pause; no element needed. | **Delay (ms)** |
| **Assert Exists** | Check that the element is on the page. | **On failure**: stop or continue |
| **Assert Text** | Check that the element's text contains or equals a value. | **Expected text**, **Match**, **On failure** |

Value changes (Type, Clear, Check, Uncheck, Select) tell the page the field was edited, so sites built with modern frameworks see them.

## When to use it

* Repeat a routine on a website: open a menu, pick a filter, click "Load more", accept a dialog.
* Fill fields that are not part of a real form, or custom drop-downs, by clicking and typing.
* Check that a page shows what you expect (Assert Text) before the workflow goes on.
* For standard forms, [Form Fill](/nodes/extension/ui/form-fill/) and [Submit Form](/nodes/extension/ui/submit-form/) are quicker to set up.

## Inputs and settings

Build the list by hand (add an action, choose **Action**, then pick the **Target Element** with the crosshair button), or record it.

### Recording actions

1. Open the page, then in the node's settings press **Record actions**.
2. Use the page as you normally would: click, type, choose, press keys, drag.
3. Press **Stop recording**.

Each interaction is added to **Actions** with a selector chosen to keep working on later visits. While recording, the element under the pointer is outlined so you can see what will be targeted. Recording continues when a click opens another page, so you can record a flow across several pages in one go.

Known limits:

* **File uploads** cannot be recorded or replayed: browsers do not let a script choose a file.
* **Embedded frames** from another site are not recorded.
* **Drag & Drop** replay is best effort: some pages do not react to a simulated drag the way they react to a real one.

## Outputs

The incoming item, unchanged. To read the result of your actions, add [Get Element Data](/nodes/extension/getelementdata/) or [Get All Text](/nodes/extension/getalltext/) after this node.

## Dependencies and credentials

None. This node needs no connection and has no slots for other nodes.

## Example workflow

1. [Tab Control](/nodes/extension/tabcontrol/), **Operation** = **Open**, opens a store's search page with **Wait For Load** on.
2. **UI Automation** with three actions: **Type** `wireless headphones` into the search box, **Click** the search button, then **Wait For Element** on `.results` with **Wait timeout** = `8000`.
3. [Get Structured Data](/nodes/extension/getstructureddata/) reads the results list.

## Common issues

* **An action does nothing.** Its **Target Element** was not found within **Wait timeout**, so it was skipped. Check the selector with **Ping** on the page, or raise **Wait timeout** for slow pages.
* **Actions after a page change do not run.** The actions run inside the page, so when an action opens a new page the rest of the list stops. End the list at that click, then continue in a second UI Automation node after [Wait For Element](/nodes/extension/ui/wait-for-element/) or [Tab Control](/nodes/extension/tabcontrol/) with **Wait For Load**.
* **A failed assertion did not stop the workflow.** With **On failure** = stop, the remaining actions are skipped, but the node itself still finishes without an error. To stop the workflow, check the page afterwards with [Get Element Data](/nodes/extension/getelementdata/) and an [IF](/nodes/builtin/flow/if/) node.
* **Key Press `Enter` does not submit the search.** Key Press sends a simulated key to the element; browsers do not submit forms for simulated keys. **Click** the search button instead, or use [Submit Form](/nodes/extension/ui/submit-form/).
* **The node fails outside the extension.** This node runs in the browser extension; install it or run the workflow from the extension.

## Related nodes

* [Form Fill](/nodes/extension/ui/form-fill/) and [Submit Form](/nodes/extension/ui/submit-form/): standard forms in one step each.
* [Wait For Element](/nodes/extension/ui/wait-for-element/): wait for the page to react, with a result you can check.
* [Get Accessibility Tree](/nodes/extension/getaccessibilitytree/): find the buttons and fields to target.
* [Tab Control](/nodes/extension/tabcontrol/): open or switch to the right page first.