Skip to main content

Overview

The Select node (Form Input node) handles form input operations including selecting dropdown options, checking/unchecking checkboxes and radio buttons, and uploading files.

Actions

select

Select one or more options from a dropdown.
values
string | string[]
required
Value(s) to select. Can be a single value or array for multi-select dropdowns.Supports variable interpolation: ${data.selectedValue}
selectBy
string
default:"value"
How to select the option.Options:
  • value - Match by option value attribute
  • label - Match by visible option text
  • index - Match by position (0-based)

check

Check a checkbox or radio button.
force
boolean
default:"false"
Force check even if element is not visible or enabled.

uncheck

Uncheck a checkbox.
force
boolean
default:"false"
Force uncheck even if element is not visible or enabled.

upload

Upload one or more files to a file input.
filePaths
string | string[]
required
File path(s) to upload. Can be absolute or relative to project root.Supports variable interpolation: ${data.uploadPath}

Configuration

selector
string
required
Element selector for the form input. Supports variable interpolation: ${data.inputSelector}
action
string
required
Action to perform: select, check, uncheck, or upload
selectorType
string
default:"css"
Type of selector: css, xpath, text, getByRole, getByLabel, etc.
selectorModifiers
object
Advanced selector modifiers for precise targeting.
timeout
number
default:"30000"
Maximum time in milliseconds to wait for the element.
failSilently
boolean
default:"false"
If true, errors don’t stop workflow execution.

Advanced Features

Waiting

waitForSelector
string
Wait for another element before/after the action.
waitForUrl
string
Wait for URL to match pattern.
waitForCondition
string
Wait for JavaScript condition to be true.
waitAfterOperation
boolean
default:"false"
Execute waits after the action instead of before.

Retry Logic

retryEnabled
boolean
default:"false"
Enable automatic retry on failure.
retryCount
number
default:"3"
Number of retry attempts.
retryDelay
number
default:"1000"
Delay between retries in milliseconds.

Examples

{
  "type": "formInput",
  "data": {
    "action": "select",
    "selector": "select#country",
    "values": "US",
    "selectBy": "value"
  }
}

Checkboxes and Radio Buttons

{
  "type": "formInput",
  "data": {
    "action": "check",
    "selector": "input#agree-terms",
    "selectorType": "css"
  }
}

File Upload

{
  "type": "formInput",
  "data": {
    "action": "upload",
    "selector": "input[type='file']",
    "filePaths": "/path/to/document.pdf"
  }
}

With Wait Conditions

{
  "type": "formInput",
  "data": {
    "action": "select",
    "selector": "select#dynamic-dropdown",
    "values": "option1",
    "waitForSelector": ".options-loaded",
    "waitForSelectorTimeout": 5000
  }
}

With Retry

Resilient Select
{
  "type": "formInput",
  "data": {
    "action": "select",
    "selector": "select.slow-loader",
    "values": "important-option",
    "retryEnabled": true,
    "retryCount": 3,
    "retryDelay": 2000,
    "retryDelayStrategy": "exponential"
  }
}

Action Comparison

ActionTarget ElementParametersUse Case
select<select>values, selectByDropdown menus
checkcheckbox, radioforceEnable options
uncheckcheckboxforceDisable options
uploadinput[type=file]filePathsFile uploads

Notes

For multi-select dropdowns, pass an array of values. The node will select all matching options.
File paths for upload must exist on the machine running the workflow. Relative paths are resolved from the project root.
The force parameter bypasses actionability checks. Use it when dealing with custom-styled inputs that are functionally clickable but not visually visible.

Common Patterns

Form Completion

[
  {
    "type": "formInput",
    "data": {
      "action": "select",
      "selector": "select#country",
      "values": "${data.country}"
    }
  },
  {
    "type": "formInput",
    "data": {
      "action": "check",
      "selector": "input#newsletter"
    }
  },
  {
    "type": "formInput",
    "data": {
      "action": "upload",
      "selector": "input#resume",
      "filePaths": "${data.resumePath}"
    }
  }
]

Conditional Check

{
  "action": "check",
  "selector": "input#optional-feature",
  "failSilently": true,
  "timeout": 5000
}

Build docs developers (and LLMs) love