Playwright MCP Browser Automation
Comprehensive browser automation using the Playwright MCP server integration.
Setup
Installation
npx @anthropic-ai/claude-code@latest mcp add playwright -- npx @playwright/mcp@latest
Configuration Options
| Option | Description | Example |
|--------|-------------|---------|
| --browser | Browser to use | chrome, firefox, webkit, msedge |
| --headless | Run without UI | --headless (default) or --no-headless |
| --device | Emulate device | --device="iPhone 15" |
| --viewport | Set viewport size | --viewport="1920x1080" |
| --caps | Enable capabilities | --caps=vision,pdf,testing,tracing |
Core Tools
Navigation
| Tool | Purpose |
|------|---------|
| browser_navigate | Navigate to URL |
| browser_navigate_back | Go back in history |
| browser_tabs | Manage tabs (list/new/close/select) |
| browser_close | Close page/browser |
| browser_resize | Resize window |
Interaction
| Tool | Purpose |
|------|---------|
| browser_click | Click element |
| browser_type | Type into input |
| browser_fill_form | Fill multiple form fields |
| browser_select_option | Select dropdown option |
| browser_hover | Hover over element |
| browser_drag | Drag and drop |
| browser_press_key | Press keyboard key |
| browser_file_upload | Upload files |
| browser_handle_dialog | Handle JS dialogs |
Information Retrieval
| Tool | Purpose |
|------|---------|
| browser_snapshot | Get page accessibility tree (preferred) |
| browser_take_screenshot | Capture visual screenshot |
| browser_console_messages | Get console logs |
| browser_network_requests | Get network requests |
Utilities
| Tool | Purpose |
|------|---------|
| browser_wait_for | Wait for conditions |
| browser_evaluate | Execute JavaScript |
| browser_run_code | Run Playwright code |
| browser_install | Install browser |
Common Patterns
Web Scraping
1. browser_navigate to target URL
2. browser_wait_for content to load
3. browser_snapshot to get page structure
4. browser_evaluate to extract data
5. Repeat for pagination if needed
Form Automation
1. browser_navigate to form page
2. browser_snapshot to find form fields
3. browser_fill_form with all field data
4. browser_click submit button
5. browser_wait_for success indicator
Authentication Flow
1. browser_navigate to login page
2. browser_snapshot to identify fields
3. browser_type username into email field
4. browser_type password into password field
5. browser_click login button
6. browser_wait_for dashboard content
Screenshot Capture
1. browser_navigate to target page
2. browser_wait_for content to load
3. browser_take_screenshot with options:
- fullPage: true for entire page
- element/ref for specific element
Element References
Elements are identified using accessibility tree references from browser_snapshot:
- link[Home] - Link with text "Home"
- button[Submit] - Button labeled "Submit"
- textbox[Email] - Input field labeled "Email"
- combobox[Country] - Dropdown for Country
Optional Capabilities
Vision (--caps=vision)
browser_mouse_click_xy- Click at coordinatesbrowser_mouse_drag_xy- Drag between coordinatesbrowser_mouse_move_xy- Move mouse
PDF (--caps=pdf)
browser_pdf_save- Save page as PDF
Testing (--caps=testing)
browser_generate_locator- Generate Playwright locatorbrowser_verify_element_visible- Verify element visibilitybrowser_verify_text_visible- Verify text on pagebrowser_verify_value- Verify element value
Tracing (--caps=tracing)
browser_start_tracing- Start recording tracebrowser_stop_tracing- Stop and save trace
Best Practices
- Always use browser_snapshot first - Understand page structure before interacting
- Wait for content - Use browser_wait_for before interactions
- Handle dynamic content - Re-snapshot after page changes
- Use accessibility references - More reliable than coordinates
- Handle dialogs promptly - They block other actions
- Close browser when done - Free up resources
Troubleshooting
| Issue | Solution |
|-------|----------|
| Browser not installed | Use browser_install tool |
| Element not found | Take fresh browser_snapshot |
| Timeout errors | Use browser_wait_for with longer time |
| Dialog blocking | Use browser_handle_dialog |
| Stale element | Re-snapshot after page changes |
When to Use This Skill
- Automating browser interactions
- Web scraping dynamic content
- E2E testing workflows
- Generating PDFs from web pages
- Taking screenshots
- Form filling and submission
- Multi-page workflows
微信扫一扫