Loading...
Loading...
Comprehensive macOS browser automation using PyXA, Playwright, Selenium, and Puppeteer for desktop web testing, scraping, and workflow automation. Use when asked to "automate web browsers", "Selenium Chrome automation", "Playwright testing", "Puppeteer scraping", or "cross-browser automation". Supports Chrome, Edge, Brave, Arc browsers.
npx skill4agent add spillwavesolutions/automating-mac-apps-plugin web-browser-automationautomating-mac-apps| Tool | Primary Use | Key Advantages |
|---|---|---|
| PyXA | macOS-native control | Direct OS integration, Arc spaces |
| Playwright | Cross-browser testing | Auto-waiting, mobile emulation |
| Selenium | Legacy enterprise | Mature ecosystem, wide language support |
| Puppeteer | Headless Chrome | Fast execution, PDF generation |
references/browser-compatibility-matrix.mdpip install PyXAreferences/pyxa-integration.mdpip install playwright && playwright installreferences/playwright-automation.mdpip install seleniumreferences/selenium-webdriver.mdnpm install puppeteerreferences/puppeteer-automation.mdreferences/workflows.md#workflow-1-multi-browser-tab-managementreferences/workflows.md#workflow-2-automated-research-and-data-collectionreferences/workflows.md#workflow-3-cross-browser-testing-suitereferences/workflows.md#workflow-4-web-scraping-and-data-extraction# PyXA approach for Chrome
chrome = PyXA.Application("Google Chrome")
chrome.new_window("https://example.com")# PyXA tab filtering
tabs = chrome.windows()[0].tabs()
work_tabs = [tab for tab in tabs if "meeting" in tab.title().lower()]
for tab in work_tabs:
tab.close()# PyXA JavaScript execution
content = tab.execute_javascript("document.body.innerText")
links = tab.execute_javascript("Array.from(document.querySelectorAll('a')).map(a => a.href)")# PyXA multi-browser control
browsers = [PyXA.Application("Google Chrome"), PyXA.Application("Microsoft Edge")]
for browser in browsers:
browser.new_tab("https://shared-resource.com")# Playwright auto-waiting
page.fill("#username", "user@example.com")
page.click("text=Submit") # Auto-waits for element// Puppeteer screenshot
await page.screenshot({ path: 'capture.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4' });from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
page.click("text=Get Started") # Auto-waits for element
page.fill("#search-input", "automation")
browser.close()references/playwright-automation.mdreferences/playwright-automation.md#network-interceptionreferences/selenium-webdriver.md#parallel-testingreferences/puppeteer-automation.md#performance-monitoringreferences/selenium-webdriver.md#browser-contexts-and-pagesreferences/pyxa-integration.mdreferences/playwright-automation.mdreferences/selenium-webdriver.mdreferences/puppeteer-automation.mdreferences/workflows.md