概述
本技能是一份 macOS 桌面端网页浏览器自动化指南,聚焦自动化(而非测试)场景,覆盖四种主流自动化框架,并提供面向真实场景的实践示例。
主要工具与用途
- PyXA:macOS 原生 Python 封装,可直接与浏览器集成,支持直接操作系统级功能与 Arc 空间。
- Playwright:跨平台框架,提供 Python 绑定,适用于现代网页自动化。
- Selenium:行业标准自动化方案,集成 ChromeDriver。
- Puppeteer:Node.js 框架,用于 Chrome/Chromium 自动化。
工具选择指南
| 工具 | 主要用途 | 关键优势 |
|---|---|---|
| PyXA | macOS 原生控制 | 直接系统集成、Arc 空间 |
| Playwright | 跨浏览器测试 | 自动等待、移动端模拟 |
| Selenium | 遗留企业场景 | 生态成熟、语言支持广泛 |
| Puppeteer | 无头 Chrome | 执行快速、PDF 生成 |
详细的浏览器支持情况参见 references/browser-compatibility-matrix.md。
快速开始
- 根据需求选择框架(见上方工具选择指南)。
- 为所选框架安装依赖。
- 阅读下方对应的框架专属指南。
- 查看工作流了解常见自动化模式。
各框架安装与指南
- PyXA 浏览器集成:适合 macOS 原生浏览器控制并支持 Arc 空间;安装命令
pip install PyXA;指南 references/pyxa-integration.md。若使用 PyXA 示例,安装说明参见 automating-mac-apps 技能中的 PyXA 安装部分。 - Playwright:适合带自动等待的跨浏览器测试;安装命令
pip install playwright && playwright install;指南 references/playwright-automation.md。 - Selenium WebDriver:适合遗留企业自动化;安装命令
pip install selenium;指南 references/selenium-webdriver.md。 - Puppeteer Node.js:适合无头 Chrome 与 PDF 生成;安装命令
npm install puppeteer;指南 references/puppeteer-automation.md。
自动化工作流
- 工作流 1:多浏览器标签管理(references/workflows.md#workflow-1-multi-browser-tab-management)
- 工作流 2:自动化研究与数据收集(references/workflows.md#workflow-2-automated-research-and-data-collection)
- 工作流 3:跨浏览器测试套件(references/workflows.md#workflow-3-cross-browser-testing-suite)
- 工作流 4:网页抓取与数据提取(references/workflows.md#workflow-4-web-scraping-and-data-extraction)
简短自动化模式
浏览器启动与配置文件管理(PyXA 方式,以 Chrome 为例)
chrome = PyXA.Application("Google Chrome")
chrome.new_window("https://example.com")
标签组织与分组(PyXA 标签过滤)
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()
JavaScript 注入用于内容提取(PyXA JavaScript 执行)
content = tab.execute_javascript("document.body.innerText")
links = tab.execute_javascript("Array.from(document.querySelectorAll('a')).map(a => a.href)")
跨浏览器同步(PyXA 多浏览器控制)
browsers = [PyXA.Application("Google Chrome"), PyXA.Application("Microsoft Edge")]
for browser in browsers:
browser.new_tab("https://shared-resource.com")
表单填写与交互(Playwright 自动等待)
page.fill("#username", "user@example.com")
page.click("text=Submit") # Auto-waits for element
截图与内容捕获(Puppeteer)
await page.screenshot({ path: 'capture.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4' });
Playwright 快速入门
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()
Playwright 高级特性(上下文、视口、动态内容)参见 references/playwright-automation.md。
高级技术
- 网络拦截:references/playwright-automation.md#network-interception
- 并行浏览器自动化:references/selenium-webdriver.md#parallel-testing
- 性能监控:references/puppeteer-automation.md#performance-monitoring
- 浏览器上下文管理:references/selenium-webdriver.md#browser-contexts-and-pages
验证清单
实现浏览器自动化后:
- 验证浏览器启动无错误;
- 确认页面导航成功完成;
- 测试元素选择器能否定位到预期元素;
- 校验提取的数据与页面内容一致;
- 检查截图/PDF 是否正确生成;
- 对 PyXA,验证 macOS 权限已授予。
故障排查
- 元素未找到错误:跨框架的常见解决方案。
- 陈旧的元素引用:处理动态内容。
- 浏览器检测:规避自动化检测。
- 网络超时问题:超时配置。
安全注意事项
- 凭证管理:安全存储登录凭证。
- 证书处理:SSL/TLS 证书验证。
- 沙箱与隔离:在隔离环境中运行自动化。
- 数据清洗:清理提取的数据。
性能优化
- 浏览器配置:禁用不必要功能。
- 网络优化:拦截不需要的资源。
- 并行执行:并发运行测试。
- 资源池化:高效管理浏览器实例。
不适用场景
- 移动端浏览器自动化(应使用 Appium 或原生测试框架)。
- 仅 Windows/Linux 的环境(部分 PyXA 功能仅限 macOS)。
- 需要破解验证码时(应使用专门服务)。
- 不遵守 robots.txt 的生产环境抓取。
应加载的参考资料
- PyXA:references/pyxa-integration.md(macOS 原生浏览器控制)
- Playwright:references/playwright-automation.md(跨浏览器测试)
- Selenium:references/selenium-webdriver.md(企业自动化)
- Puppeteer:references/puppeteer-automation.md(Node.js Chrome 自动化)
- 工作流:references/workflows.md(完整自动化场景)