Dexter Browser Automation

v2.0.0

Browser 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...

0· 87· 2 versions· 0 current· 0 all-time· Updated 8h ago· MIT-0
byTyler@tylerdotai

Install

openclaw skills install dex-browser

Browser Automation

When to Use This Skill

Trigger conditions:

  • web_fetch returned empty, garbled, or incomplete content
  • Target page is JavaScript-rendered (React/Vue/Angular SPAs)
  • Need to interact with UI: click buttons, fill forms, navigate flows
  • Need a screenshot of a page's current rendered state
  • Multi-step flows: login → navigate → scrape
  • Extracting structured data from dynamically loaded content

Do NOT use this skill when:

  • Page is static HTML — web_fetch is faster
  • Only need to find a URL — web_search is the right first step
  • You need API data — check if the site has a public API first
  • The page requires authentication you don't have

The 3-Layer Web Tool Hierarchy

Layer 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.


Setup Check

python3 skills/browser-automation/scripts/init.py

Should return {"ready": true}. If not, Playwright needs installation.


Scripts

All scripts exit with code 0 on success, 1 on usage error, 2 on browser error.

screenshot.py — Capture a page

python3 skills/browser-automation/scripts/screenshot.py <url> [path]
# Default path: /tmp/screenshot.png

Returns: {success, saved, title}

scrape.py — Get rendered HTML

python3 skills/browser-automation/scripts/scrape.py <url>

Returns: {success, title, url, html} (html truncated to 50k chars)

extract.py — Pull structured data

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[]}

interact.py — Click and fill

# 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}


Reference Docs

  • references/selectors.md — CSS selector syntax and common patterns
  • references/patterns.md — Login flows, search pagination, infinite scroll, stealth mode, error recovery

Examples

JS-rendered page (would fail web_fetch)

# web_fetch gives nothing on HN — use extract
python3 scripts/extract.py "https://news.ycombinator.com" ".titleline > a"

Screenshot a page

python3 scripts/screenshot.py "https://site.com/dashboard" "/tmp/dashboard.png"

Form login flow

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"

Get structured data from a list

python3 scripts/extract.py "https://jobs.site.com/postings?q=engineer" ".job-listing h2"

Quick Reference

TaskCommand
Screenshotscreenshot.py <url> [path]
HTMLscrape.py <url>
Dataextract.py <url> <selector>
Clickinteract.py click <selector> [url]
Fillinteract.py fill <selector> <value> [url]
Setup checkinit.py

Skill Metadata

  • Scripts: init.py, screenshot.py, scrape.py, extract.py, interact.py
  • References: selectors.md, patterns.md
  • Requires: Playwright (pip install playwright && playwright install chromium)
  • Exit codes: 0=success, 1=usage error, 2=browser error

Version tags

automationvk975202wg1w2ased9s14j9nttn84w47zbrowservk975202wg1w2ased9s14j9nttn84w47zlatestvk975202wg1w2ased9s14j9nttn84w47zplaywrightvk975202wg1w2ased9s14j9nttn84w47zscrapingvk975202wg1w2ased9s14j9nttn84w47z