增强的浏览器自动化,支持错误恢复、重试逻辑、多浏览器兼容、截图校验以及网页抓取集成。支持 Chrome、Firefox、Edge、Safari 等主流浏览器。
Enhanced browser automation with error recovery, retry logic, multi-browser support, and screenshot verification.
bash
# Check available browsers
npx playwright install
# Or install specific browser
npx playwright install chromium
npx playwright install firefox
npx playwright install webkit
bash
# 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
javascript
// 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));
}
}
};
ErrorSolutionElement not foundUse browser observe to discover elementsTimeoutIncrease timeout or use retry logicCAPTCHA detectedSwitch to manual solving or proxyNavigation failedCheck URL, network, try different browserScreenshot failedVerify browser is running
bash
# 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>
FeatureChromeFirefoxEdgeSpeedFastMediumFastMemoryHighMediumMediumStealthMediumHighMediumExtensionsYesYesYesBest forGeneralPrivacyWindows
bash
# 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
bash
# 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
}))
"
bash
# 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"
bash
# 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 elementsbash
# 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