Install
openclaw skills install browser-auto-plusEnhanced browser automation with error recovery, retry logic, multi-browser support, screenshot verification, and integration with web scraping. Supports Chrome, Firefox, Edge with automatic failover.
openclaw skills install browser-auto-plusEnhanced browser automation with error recovery, retry logic, multi-browser support, and screenshot verification.
# Check available browsers
npx playwright install
# Or install specific browser
npx playwright install chromium
npx playwright install firefox
npx playwright install webkit
# Navigate
browser navigate <url>
# Interact
browser act "<action>"
# Extract data
browser extract "<instruction>" ['{}']
# Discover elements
browser observe "<query>"
# Take screenshot
browser screenshot
# Close browser
browser close
// Automatic retry with exponential backoff
const retry = async (fn, maxRetries = 3) => {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
}
}
};
| Error | Solution |
|---|---|
| Element not found | Use browser observe to discover elements |
| Timeout | Increase timeout or use retry logic |
| CAPTCHA detected | Switch to manual solving or proxy |
| Navigation failed | Check URL, network, try different browser |
| Screenshot failed | Verify browser is running |
# Use specific browser
BROWSER=firefox browser navigate <url>
# Use headless mode
HEADLESS=true browser navigate <url>
# Use proxy
PROXY=http://proxy:port browser navigate <url>
| Feature | Chrome | Firefox | Edge |
|---|---|---|---|
| Speed | Fast | Medium | Fast |
| Memory | High | Medium | Medium |
| Stealth | Medium | High | Medium |
| Extensions | Yes | Yes | Yes |
| Best for | General | Privacy | Windows |
# Take screenshot after action
browser act "click Sign In"
browser screenshot
# Take screenshot with custom name
browser screenshot --name "after-login"
# Take full page screenshot
browser screenshot --full-page
# Extract using CSS selector
browser extract "document.querySelectorAll('.product-title')"
# Extract using XPath
browser extract "document.evaluate('//div[@class=\"price\"]', document, null, XPathResult.ANY_TYPE, null)"
# Extract with data transformation
browser extract "
Array.from(document.querySelectorAll('.item')).map(item => ({
title: item.querySelector('.title').textContent,
price: item.querySelector('.price').textContent,
link: item.querySelector('a').href
}))
"
# Randomize user agent
browser act "set user agent to random"
# Add random delays
browser act "wait 1-3 seconds"
# Randomize viewport
browser act "set viewport to random size"
# Check for CAPTCHA
browser observe "CAPTCHA, reCAPTCHA, hCaptcha, Cloudflare"
# If found, take screenshot for manual solving
browser screenshot --name "captcha"
npx playwright installbrowser observe to discover elements# Full scraping workflow
browser navigate "https://example.com/products"
browser observe ".product-list"
browser extract "
Array.from(document.querySelectorAll('.product')).map(p => ({
name: p.querySelector('.name').textContent,
price: p.querySelector('.price').textContent,
rating: p.querySelector('.rating').textContent
}))
"
browser screenshot --name "products"
browser close