SuperAPI AI 工具集

chrome-automation

测试与质量

查看项目

更新于 10-15 07:45

技能介绍

用途

Chrome 浏览器自动化技能,专门用于 Chrome 浏览器自动化操作。当用户需要自动化浏览器操作、网页测试、数据抓取或 UI 自动化时使用。

主要能力

技能覆盖以下功能方向:

  • 网页自动化操作
  • E2E 测试
  • 网页截图和 PDF 生成
  • 表单自动填充
  • 动态网页数据抓取
  • 性能测试和监控

典型使用场景包括:自动化登录网站并抓取数据、批量截取网页截图、自动化测试购物流程、监控网站性能指标、自动填写表单并提交、生成网页 PDF 报告。

技术栈

自动化工具:Puppeteer(Chrome DevTools Protocol)、Playwright(跨浏览器自动化)、Selenium(经典自动化框架)、Cypress(现代 E2E 测试框架)。

辅助工具:puppeteer-extra(Puppeteer 插件系统)、puppeteer-stealth(反检测插件)、chrome-launcher(Chrome 启动器)。

核心功能

  1. 页面导航:使用 puppeteer.launch 启动浏览器,可配置 headless 与 slowMo;通过 page.goto 导航并设置 waitUntil(如 networkidle2);支持 goBack、goForward、reload,最后 browser.close 关闭。

  2. 元素操作:点击元素(page.click)、输入文本(page.type)、选择下拉框(page.select)、上传文件(uploadFile)、等待元素(waitForSelector)、获取单个元素文本($eval)与多个元素($$eval)。

  3. 表单自动化:填写文本输入框、选择单选按钮与复选框、选择下拉框、填写日期与文本域、提交表单并等待导航完成。

  4. 数据抓取:启动浏览器、导航、等待内容加载(waitForSelector),通过 $$eval 批量提取标题、价格、图片、链接等字段,最后关闭浏览器返回数据。

  5. 截图和 PDF:支持全页截图(fullPage)、元素截图,以及生成 PDF(可设置 format、printBackground、margin)。

  6. 性能监控:通过 page.tracing 开始/停止追踪,获取 page.metrics 指标,并通过 Performance API 读取 loadTime、domReady、firstPaint 等数据。

高级功能

  • 拦截和修改请求:setRequestInterception 后按资源类型 abort 或 continue,可修改请求头。
  • 模拟移动设备:使用 puppeteer.devices(如 iPhone 12)配合 page.emulate。
  • 处理弹窗:监听 dialog 事件并 accept 或 dismiss;处理新窗口通过 targetcreated 事件。
  • Cookie 管理:setCookie、cookies、deleteCookie。
  • 执行 JavaScript:page.evaluate 在页面上下文执行代码、传递参数,exposeFunction 向页面暴露函数。

E2E 测试示例

提供 Playwright 测试示例(登录成功与登录失败提示,使用 test、expect、page.fill、page.click、toHaveURL、toContainText 等)与 Cypress 测试示例(购物车添加与删除商品,使用 cy.visit、cy.get、within、should 等)。

反检测技术

使用 puppeteer-extra 与 puppeteer-extra-plugin-stealth,配合 --no-sandbox、--disable-setuid-sandbox、--disable-blink-features=AutomationControlled 等启动参数;设置真实 User-Agent、视口大小,并通过 evaluateOnNewDocument 隐藏 webdriver 标识。

最佳实践

  • 错误处理:try/catch/finally 结构,出错时截图保存现场,finally 中关闭浏览器。
  • 并发控制:使用 p-limit 限制并发数(示例为 5),每个任务独立开页并在 finally 中关闭页面。
  • 资源优化:拦截并阻止 image、stylesheet、font 等资源,设置默认超时与导航超时。

资源清理原则(强制)

所有涉及浏览器的 cron 任务完成后,必须自动关闭 Chrome 进程。任务结束时必须执行:

pkill -f chrome
pkill -f chromium

或在 JavaScript/TypeScript 中显式关闭浏览器:

await browser.close();

const { execSync } = require('child_process');
execSync('pkill -f chrome');

原因:避免内存泄漏和资源占用,防止 Gateway CPU 100% 过载。

注意事项

  • 遵守网站的 robots.txt 和服务条款
  • 控制请求频率,避免对服务器造成压力
  • 使用代理池避免 IP 被封
  • 妥善处理验证码和登录
  • 定期更新浏览器版本
  • 注意内存泄漏,及时关闭页面和浏览器
  • 使用无头模式提高性能
  • 保存日志和错误截图便于调试

限制

资料未提供该技能的安装命令、依赖版本、收费方式、平台支持范围等具体信息,暂未提供。