# Find by IDbdg dom query "#login-form"# Find by classbdg dom query ".error-message"# Complex selectorbdg dom query "#login-form input[type='password']"# Attribute selectorsbdg dom query "[data-test-id='submit-button']"
Attribute selectors with quotes can be tricky due to shell escaping. If you see “Element not found”, try querying first then using the index.
The default semantic output provides accessibility information in a compact, token-efficient format:
bdg dom get "button[type='submit']"
Output:
[Button] "Submit Form" (focusable)
More examples:
bdg dom get "h1"# [Heading L1] "Welcome to Dashboard"bdg dom get "#searchInput"# [Searchbox] "Search" (focusable, required)bdg dom get ".nav-link"# [Link] "Home" (focusable)
By Selector
By Index
bdg dom get "button.submit"
# Query firstbdg dom query "button"# Get by index (0-based)bdg dom get 0
# Get all matching elementsbdg dom get "button" --raw --all# Get specific element by position (1-based)bdg dom get "button" --raw --nth 2# Get by nodeId (from other commands)bdg dom get --raw --node-id 123
# Find all buttonsbdg dom a11y query role=button# Find by accessible namebdg dom a11y query name="Submit"# Combine criteria (AND logic)bdg dom a11y query role=button,name="Submit"# Find by descriptionbdg dom a11y query description="Click to submit"
Query Pattern Syntax:
role=<value> - Filter by ARIA role (case-insensitive)
name=<value> - Filter by accessible name
description=<value> - Filter by accessible description
# By selectorbdg dom a11y describe "button[type='submit']"# By IDbdg dom a11y describe "#login-form"# By index (from previous query)bdg dom query "button"bdg dom a11y describe 0
# Get page titlebdg dom eval "document.title"# Get element text contentbdg dom eval 'document.querySelector("h1").textContent'# Get form valuesbdg dom eval '(() => { const el = document.querySelector("input"); return el ? el.value : null;})()'
JavaScript expressions with quotes require careful escaping. Use single quotes around the script and double quotes inside, or vice versa.
# Recommended: Single quotes outside, double quotes insidebdg dom eval 'document.querySelector("h1").textContent'# Alternative: Double quotes outside, single quotes insidebdg dom eval "document.querySelector('h1').textContent"# For complex scripts, use heredocbdg dom eval "$(cat <<'EOF'(() => { const el = document.querySelector("input"); return el ? el.value : null;})() EOF)"
When errors occur, bdg shows the script as received to help diagnose shell escaping issues.