| name | agent-browser |
| description | Headless browser automation CLI for AI agents. Use this skill when you need to automate web interactions, scrape web pages, test web applications, or perform any browser-based tasks. Triggers include "browse", "automate browser", "scrape website", "test web app", "fill form", "take screenshot", or any web automation request. Provides accessibility-first element targeting with semantic locators. |
Agent-Browser: Browser Automation for AI Agents
Automate web browser interactions using a fast CLI designed specifically for AI agents. Uses accessibility trees and semantic locators for reliable element targeting.
Installation
npm install -g agent-browser
agent-browser install
For Linux, if you encounter library errors:
agent-browser install --with-deps
Core Concepts
1. Element References (@e System)
Elements receive @e references from snapshot for reliable targeting:
agent-browser snapshot
agent-browser click @e123
2. Sessions (Isolated Browser Instances)
Run multiple isolated browser contexts:
agent-browser --session user1 open example.com
agent-browser --session user2 open example.com
Essential Workflow
Step 1: Open Page and Get Snapshot
agent-browser open "https://example.com"
agent-browser snapshot
Snapshot options (reduce output):
-i - Interactive elements only
-c - Compact mode
-d 3 - Limit depth to 3
-s "#main" - Scope to specific selector
Step 2: Interact with Elements
Using semantic locators (preferred):
agent-browser find role button click --name "Submit"
agent-browser find label "Email" fill "user@example.com"
agent-browser find text "Sign In" click
Using selectors or @references:
agent-browser click "#submit-btn"
agent-browser click @e42
agent-browser fill "input[name='email']" "user@example.com"
agent-browser type "#password" "secret123"
Step 3: Extract Information
agent-browser get text ".result"
agent-browser get html "#content"
agent-browser screenshot output.png
agent-browser screenshot --full
Common Commands Reference
Navigation & Page Control
agent-browser open <url>
agent-browser back
agent-browser forward
agent-browser reload
agent-browser wait <selector>
agent-browser wait 3000
Element Interaction
agent-browser click <sel>
agent-browser dblclick <sel>
agent-browser fill <sel> <text>
agent-browser type <sel> <text>
agent-browser press Enter
agent-browser check <sel>
agent-browser uncheck <sel>
agent-browser select <sel> <val>
agent-browser hover <sel>
agent-browser upload <sel> <file>
Scrolling
agent-browser scroll down 500
agent-browser scroll up
agent-browser scrollintoview <sel>
Information Extraction
agent-browser get text <sel>
agent-browser get html <sel>
agent-browser get value <sel>
agent-browser get attr href <sel>
agent-browser get url
agent-browser get title
agent-browser get count <sel>
Element State Checks
agent-browser is visible <sel>
agent-browser is enabled <sel>
agent-browser is checked <sel>
Screenshots & PDF
agent-browser screenshot [path]
agent-browser screenshot --full
agent-browser pdf output.pdf
Semantic Element Finding
agent-browser find role button click --name "Submit"
agent-browser find text "Login" click
agent-browser find label "Username" fill "john"
agent-browser find placeholder "Search..." type "query"
agent-browser find testid "submit-btn" click
agent-browser find first button click
agent-browser find last link click
agent-browser find nth 2 button click
Browser Configuration
agent-browser set viewport 1920 1080
agent-browser set device "iPhone 13"
agent-browser set geo 37.7749 -122.4194
agent-browser set offline on
agent-browser set media dark
agent-browser set headers '{"Authorization":"Bearer token"}'
Session Management
agent-browser --session <name> <command>
agent-browser session list
agent-browser session
Cookies & Storage
agent-browser cookies
agent-browser cookies set name value
agent-browser storage local
agent-browser storage session
Network Control
agent-browser network requests
agent-browser network route <url> --abort
agent-browser network route <url> --body '{...}'
Authentication & State
agent-browser state save auth.json
agent-browser state load auth.json
Debugging
agent-browser console
agent-browser errors
agent-browser highlight <sel>
agent-browser trace start trace.zip
Practical Workflows
Workflow 1: Login & Extract Data
agent-browser --session login open "https://app.example.com/login"
agent-browser --session login snapshot -i
agent-browser --session login find label "Email" fill "user@example.com"
agent-browser --session login find label "Password" fill "secret123"
agent-browser --session login find role button click --name "Sign In"
agent-browser --session login wait ".dashboard"
agent-browser --session login get text ".user-profile"
agent-browser --session login state save auth.json
agent-browser --session login screenshot dashboard.png
Workflow 2: Form Automation
agent-browser open "https://example.com/contact"
agent-browser snapshot -i
agent-browser find label "Name" fill "John Doe"
agent-browser find label "Email" fill "john@example.com"
agent-browser find label "Message" fill "Hello, this is a test message."
agent-browser find label "Country" select "United States"
agent-browser find label "Attachment" upload "/path/to/file.pdf"
agent-browser find label "I agree to terms" check
agent-browser find role button click --name "Submit"
agent-browser wait ".success-message"
agent-browser get text ".success-message"
Workflow 3: Web Scraping
agent-browser open "https://news.example.com"
agent-browser scroll down 1000
agent-browser get text "article h2"
agent-browser screenshot --full news.png
agent-browser pdf news.pdf
Workflow 4: Testing Web App
agent-browser --session test open "http://localhost:3000"
agent-browser --session test set viewport 1920 1080
agent-browser --session test find text "Features" click
agent-browser --session test get url
agent-browser --session test set media dark
agent-browser --session test screenshot dark-mode.png
agent-browser --session test set device "iPhone 13"
agent-browser --session test screenshot mobile.png
agent-browser --session test console
agent-browser --session test errors
Workflow 5: Multi-Step Automation with State
agent-browser open "https://app.example.com/login"
agent-browser find label "Email" fill "user@example.com"
agent-browser find label "Password" fill "secret123"
agent-browser find role button click --name "Login"
agent-browser wait ".dashboard"
agent-browser state save logged-in.json
agent-browser open "https://app.example.com"
agent-browser state load logged-in.json
agent-browser open "https://app.example.com/dashboard"
Best Practices
- Always get snapshot first: Use
snapshot to understand page structure before interacting
- Prefer semantic locators: Use
find role/text/label over CSS selectors for reliability
- Use element references:
@e references from snapshot are more stable than selectors
- Wait for elements: Use
wait <selector> before interacting with dynamic content
- Use sessions for isolation: Different tasks/users should use separate sessions
- Save authentication state: Reuse
state save/load to avoid repeated logins
- Filter snapshots: Use
-i, -c, -d, -s flags to reduce snapshot output
- Check element state: Use
is visible/enabled/checked before interacting
- Handle errors gracefully: Check
console and errors when things go wrong
- Take screenshots for debugging: Visual confirmation is valuable
Common Patterns
Pattern: Wait for AJAX/Dynamic Content
agent-browser click "#load-more"
agent-browser wait ".new-content"
agent-browser get text ".new-content"
Pattern: Handle Dropdowns
agent-browser select "#country" "United States"
agent-browser find label "Country" select "United States"
Pattern: Keyboard Navigation
agent-browser press Tab
agent-browser press Tab
agent-browser press Enter
agent-browser press Control+a
agent-browser press Shift+Tab
Pattern: Verify Element State
if agent-browser is visible "#success-msg"; then
echo "Success message appeared"
agent-browser get text "#success-msg"
fi
Pattern: Extract Multiple Elements
COUNT=$(agent-browser get count ".product-item")
echo "Found $COUNT products"
agent-browser get text ".product-title"
Troubleshooting
Browser won't start
agent-browser install --with-deps
agent-browser --executable-path /usr/bin/chromium open example.com
Element not found
agent-browser snapshot -s "#container"
agent-browser wait <selector>
agent-browser find text "Button Text" click
Network issues
agent-browser set offline off
agent-browser cookies
Advanced: JavaScript Execution
agent-browser eval "document.title"
agent-browser eval "document.querySelectorAll('a').length"
Advanced: CDP Connection
chrome --remote-debugging-port=9222
agent-browser connect 9222
Examples
Example 1: GitHub Login & Star Repository
agent-browser open "https://github.com/login"
agent-browser find label "Username or email" fill "username"
agent-browser find label "Password" fill "password"
agent-browser find role button click --name "Sign in"
agent-browser wait ".Header"
agent-browser open "https://github.com/vercel-labs/agent-browser"
agent-browser find role button click --name "Star"
agent-browser screenshot starred.png
Example 2: Google Search
agent-browser open "https://google.com"
agent-browser find role searchbox type "agent-browser github"
agent-browser press Enter
agent-browser wait "#search"
agent-browser screenshot results.png
agent-browser get text "h3"
Example 3: E-commerce Price Monitoring
agent-browser open "https://shop.example.com/product/123"
PRICE=$(agent-browser get text ".price")
echo "Current price: $PRICE"
agent-browser screenshot product.png
Tips for AI Agents
- Start with snapshot: Always begin with
snapshot -i to see interactive elements
- Use semantic finding:
find role/text/label is more reliable than CSS selectors
- Chain commands: Build complex workflows by chaining commands
- Verify actions: Use
get text or screenshot to confirm actions succeeded
- Handle timing: Use
wait for dynamic content, not hardcoded sleeps
- Session isolation: Use
--session for parallel browser instances
- State persistence: Use
state save/load for multi-step workflows
- Debug with snapshots: When stuck, take fresh snapshot to see current state
Requirements
- Node.js installed
- Chromium (auto-installed via
agent-browser install)
- Linux users may need:
agent-browser install --with-deps
Global Options
agent-browser --session <name> <command>
agent-browser --headers <json> <command>
agent-browser --executable-path <path> <cmd>