Session Actions
This page defines all of the built in session scoped actions.
$
Selects a single element using the provided CSS selector and scopes all nested actions to that element. Any nested evaluators or actions will operate relative to this selection.
selector: The CSS selector. Can be a static string or expression.
$ "#search-input" { type "Tadpole HQ" mouse.press "Enter"}Selects all elements matching the provided CSS selector. This creates a collection context.
selector: The CSS selector. Can be a static string or expression.
$$ ".result-card" { extract "results" { title { text } link { attr "href" } }}Clicks on the active element. It uses a natural movement (bezier curve) to hover the mouse over the element and optionally delay before clicking the target.
Options
Section titled “Options”delay: The delay between hovering and clicking the target. Can be a static number or expression.mouseclick.*: Prefixed options. Seemouse.clickoptionshover.*: Prefixed options. Seehoveroptions
$ "#submit-button" { click delay="=gauss(0.5, 0.25)"}extract
Section titled “extract”Extracts data from the current element context into a structured record (JSON). Each child node of extract defines a key in the resulting object and the evaluator(s) used to fetch its value.
path: The target key or dot-delimited path (e.g.,user.profile) where the record will be stored in the global state. Supports static strings or expressions.
Children
Section titled “Children”The name of each child node becomes a key in the output record. The children of these nodes are evaluators because we need to produce a value.
$$ ".product-card" { extract "products" { title { text } price { $ ".amount" text } details { attr "data-info" } }}// Output: {"products": [{"title": "...", "price": "...", "details": "..."}, ...]}Usage (nested path)
Section titled “Usage (nested path)”$ ".header" { extract "metadata.page" { title { text } url { attr "href" } }}// Output {"metadata": {"page": {"title": "...", "url": "..."}}}for_each
Section titled “for_each”Iterates over a collection of elements selected by a parent $$ block.
This action is required when you need to perform individual interactions (like click or hover) on every item in a list.
$$ ".result-item" { for_each { $ "button.expand" { click } }}Uses a combination of an ease-out function to scroll and a bezier curve to move the mouse over the active element.
Options
Section titled “Options”move.*: Prefixed options. Seemouse.moveoptionsscroll.*: Prefixed options. Seemouse.natural_scrolloptions
Navigates the current browser tab to a specified URL.
url: The url to navigate to. Can be a static string or expression.
Options
Section titled “Options”wait_until: The event to wait for after navigating (loadordomcontentloaded). Defaults toload.timeout: The timeout (in ms) for thewait_untilevent to fire. Defaults to5000. Can be a static number or expression.
Clicks on the active element and types in the provided text.
It uses hover internally so it uses the same combination of an ease-out function to scroll
and a bezier curve to move the mouse.
text: The text to type. Can be a static string or expression.
Options
Section titled “Options”delay: The delay between clicking the target and typing. Can be a static number or expression.click.*: Prefixed options. Seeclickoptionskeyboardtype.*: Prefixed options. Seekeyboard.typeoptions