Discover forms on the page with complete field information:
# Auto-select most relevant formbdg dom form# Show all forms on pagebdg dom form --all# Quick scan (names and types only)bdg dom form --brief# JSON outputbdg dom form --json
# Fill by selectorbdg dom fill "#username" "admin"# Fill by index from form discoverybdg dom fill 0 "[email protected]"# Fill without blur (keeps focus)bdg dom fill "#search" "query" --no-blur# Skip network stability waitbdg dom fill "#fast-field" "value" --no-wait# Fill specific match when multiple elementsbdg dom fill "input[type='text']" "value" --index 1
# Click by selectorbdg dom click "#login-btn"# Click by indexbdg dom click 0# Click specific matchbdg dom click "button.submit" --index 2# Skip network stability waitbdg dom click "#fast-btn" --no-wait
Press keyboard keys on elements for navigation and shortcuts:
# Press Enter on input (TodoMVC pattern)bdg dom pressKey ".new-todo" Enter# Tab to next fieldbdg dom pressKey "input" Tab# Navigate autocompletebdg dom pressKey "#search" ArrowDown --times 3# Close modalbdg dom pressKey "body" Escape# Select all (Ctrl+A)bdg dom pressKey "textarea" a --modifiers ctrl# Press by indexbdg dom pressKey 0 Enter
# Ctrl+A (Select all)bdg dom pressKey "textarea" a --modifiers ctrl# Shift+Tab (Previous field)bdg dom pressKey "input" Tab --modifiers shift# Ctrl+Shift+K (Complex shortcut)bdg dom pressKey "body" k --modifiers ctrl,shift# Meta+V (Cmd+V on Mac)bdg dom pressKey "input" v --modifiers meta
# Submit form (waits for network idle)bdg dom submit "#login-form"# Wait for page navigationbdg dom submit "#login-form" --wait-navigation# Custom network idle timeoutbdg dom submit "#login-form" --wait-network 2000# Custom total timeoutbdg dom submit "#login-form" --timeout 10000# Submit by indexbdg dom submit 6
Scroll to elements or by offset with lazy-load detection:
# Scroll element into viewbdg dom scroll "footer"# Scroll down by pixelsbdg dom scroll --down 500# Scroll to page bottombdg dom scroll --bottom# Scroll to page topbdg dom scroll --top# Scroll to nth matchbdg dom scroll "li.item" --index 5# Skip lazy-load waitbdg dom scroll "footer" --no-wait
# Add todo with Enter keybdg dom fill ".new-todo" "Buy groceries"bdg dom pressKey ".new-todo" Enter# Add anotherbdg dom fill ".new-todo" "Walk dog"bdg dom pressKey ".new-todo" Enter
# Step 1bdg dom formbdg dom fill 0 "value1"bdg dom fill 1 "value2"bdg dom click 5 # Next button# Wait for page to loadbdg status# Step 2bdg dom formbdg dom fill 0 "value3"bdg dom click 3 # Submit
# Type in searchbdg dom fill "#search" "java"# Navigate dropdown with arrow keysbdg dom pressKey "#search" ArrowDown --times 2# Select with Enterbdg dom pressKey "#search" Enter
# Fill initial fieldsbdg dom fill "#country" "USA"# Wait for dynamic field to appearbdg dom query "#state"# Fill dynamic fieldbdg dom fill "#state" "California"
# Rapid typing without waitingbdg dom fill "#field1" "value1" --no-waitbdg dom fill "#field2" "value2" --no-waitbdg dom fill "#field3" "value3" --no-wait# Then wait manuallybdg status
# Check if form is readybdg dom form --json | jq '.data.forms[0].summary.readyToSubmit'# Get required fieldsbdg dom form --json | jq '.data.forms[0].fields[] | select(.required)'# Verify fill succeededbdg dom fill "input" "value" --json | jq '.success'