| name | browser |
| description | Control a real Chromium browser — navigate pages, click buttons, fill forms, take screenshots, read page content via accessibility tree. Use when the user asks to open a browser, visit a website, interact with a web page, or scrape visible content. |
Browser Control Skill
You have a browser control tool at ~/.qwen/skills/browser/browser_tool.py that controls a real visible Chromium browser via CDP.
First-Time Setup
If the tool isn't installed yet, run:
python3 ~/.qwen/skills/browser/browser_tool.py install
Architecture
launch starts Chromium as a detached process with --remote-debugging-port=9222
- All other commands connect via CDP, do their work, disconnect
- Browser stays open independently — no blocking needed
- Persistent profile at
~/.browser-tool/profile/ — logins survive across sessions
Commands
BT="python3 ~/.qwen/skills/browser/browser_tool.py"
$BT launch
$BT launch --patchright
$BT launch --connect 9222
$BT navigate "https://example.com"
$BT click "button.submit"
$BT type "input[name=email]" "user@example.com"
$BT type "input[name=email]" "new@example.com" --clear
$BT snapshot
$BT snapshot --selector "main"
$BT screenshot
$BT screenshot --name "step1"
$BT screenshot --full
$BT html
$BT html --selector "div.main"
$BT evaluate "document.title"
$BT wait --selector "div.loaded" --timeout 15
$BT pages
$BT status
$BT close
Rules
- Launch first — always run
launch before any other command
- Use snapshot for AI reasoning — when you need to understand page structure, use
snapshot first — it's faster and more accurate than screenshots
- Use Patchright for sites with Cloudflare, DataDome, or other bot detection
- Profile persists — user logs in once, stays logged in next time
- launch is NOT blocking — it detaches the browser process and returns immediately