Install
openclaw skills install dex-browserBrowser automation via Playwright. Use when pages are JS-rendered, require user interaction (click/fill), or need screenshots. Part of the 3-layer web tool h...
openclaw skills install dex-browserTrigger conditions:
web_fetch returned empty, garbled, or incomplete contentDo NOT use this skill when:
web_fetch is fasterweb_search is the right first stepLayer 1 — Search: web_search → find URLs
Layer 2 — Extract: web_fetch → get page content (static pages only!)
Layer 3 — Interact: browser.py → JS rendering, interaction, screenshots
Always try Layer 1 and 2 before reaching for browser automation.
python3 skills/browser-automation/scripts/init.py
Should return {"ready": true}. If not, Playwright needs installation.
All scripts exit with code 0 on success, 1 on usage error, 2 on browser error.
python3 skills/browser-automation/scripts/screenshot.py <url> [path]
# Default path: /tmp/screenshot.png
Returns: {success, saved, title}
python3 skills/browser-automation/scripts/scrape.py <url>
Returns: {success, title, url, html} (html truncated to 50k chars)
python3 skills/browser-automation/scripts/extract.py <url> <selector>
CSS selector targets elements. Extracts up to 50 elements, each with text, href, src, alt.
Returns: {success, count, selector, items[]}
# Click
python3 skills/browser-automation/scripts/interact.py click <selector> [url]
# Fill input
python3 skills/browser-automation/scripts/interact.py fill <selector> <value> [url]
# Hover
python3 skills/browser-automation/scripts/interact.py hover <selector> [url]
If url is provided, navigates there first. Returns: {success, action, selector, title, url}
references/selectors.md — CSS selector syntax and common patternsreferences/patterns.md — Login flows, search pagination, infinite scroll, stealth mode, error recovery# web_fetch gives nothing on HN — use extract
python3 scripts/extract.py "https://news.ycombinator.com" ".titleline > a"
python3 scripts/screenshot.py "https://site.com/dashboard" "/tmp/dashboard.png"
python3 scripts/interact.py fill "#username" "user@example.com" "https://site.com/login"
python3 scripts/interact.py fill "#password" "secret123"
python3 scripts/interact.py click "button[type=submit]"
python3 scripts/scrape.py "https://site.com/dashboard"
python3 scripts/extract.py "https://jobs.site.com/postings?q=engineer" ".job-listing h2"
| Task | Command |
|---|---|
| Screenshot | screenshot.py <url> [path] |
| HTML | scrape.py <url> |
| Data | extract.py <url> <selector> |
| Click | interact.py click <selector> [url] |
| Fill | interact.py fill <selector> <value> [url] |
| Setup check | init.py |
init.py, screenshot.py, scrape.py, extract.py, interact.pyselectors.md, patterns.mdpip install playwright && playwright install chromium)