还在用 Selenium 跑 3 小时的回归?有人用 Playwright 砍到了 4 分钟

简介: 本文对比Playwright与Selenium性能差异:单步操作快45%,完整E2E套件从3小时压缩至4分钟。核心在于Playwright的长连接协议、自动等待、原生并行及零Grid运维,而非单纯提速。迁移重在用对机制,而非API替换。

先看一组数字。

TestDino 2026 年 2 月的基准测试:同样一条操作动作,Playwright 平均 290 毫秒,Selenium 536 毫秒。一套 250 条用例的 E2E 套件,Playwright 跑完 3 分 48 秒,Selenium 要 6 分 52 秒,差了 45%。

45% 很可观。但 45% 解释不了“3 小时到 4 分钟”。

真正让差距从“快一点”变成“快一个量级”的,不是单步速度,是 Selenium 那 3 小时里,有大量时间根本不在“执行操作”上。

一、先算账:Selenium 的 3 小时,时间去哪了
一套典型的手写 Selenium 回归,耗时结构大概是这样:

驱动初始化。Selenium 每个 session 启动 driver 要多花 3 到 5 秒。如果用例之间不复用 session,几百条用例光启动浏览器就要吃掉十几分钟。

HTTP 往返。Selenium 的 WebDriver 协议是 HTTP 请求-响应模式,每一个命令——click、type、navigate——都是一次完整的 HTTP 往返。单次 536 毫秒听起来不多,但一条用例几十个动作,几百条用例叠起来,就是实打实的小时级开销。

等待写错了。Selenium 没有内建的自动等待,开发者要么写 time.sleep(3),要么写显式等待。写 sleep 就是在赌页面速度——赌输了 flaky,赌赢了浪费。学术研究对 51 个 Apache 项目的分析发现,45% 的 flaky 修复最终都指向异步时序问题。这些“修 flaky”的时间,不会出现在回归耗时里,但会吃掉 QA 的每一个下午。

并行是靠 Grid 堆出来的。Selenium 原生不提供轻量并行,要并行就得上 Selenium Grid。Grid 的代价是:节点间网络延迟、浏览器实例争抢 CPU 和内存、每个节点要单独维护浏览器和 driver 版本。设置过高反而因为资源争抢导致整体性能下降。

3 小时里,真正“必须串行、必须等”的部分,远比想象中少。 剩下的大部分是协议开销、等待浪费、和基础设施摩擦。

二、Playwright 的 4 分钟,快在哪
架构差异:长连接 vs 轮询
Playwright 不用 WebDriver 的 HTTP 模式。它通过 Chrome DevTools Protocol(CDP)建立一条持久的 WebSocket 连接,所有命令走这条长连接。没有每次命令的 HTTP 握手,没有轮询。

单步 290ms vs 536ms 的差距,根源就在这里。但更关键的是,这条长连接还带来了 原生的网络拦截和事件监听能力——不需要额外搭 Mock 服务,就能在测试里直接拦截和断言网络请求。

自动等待:把“等页面”从代码里删掉
Playwright 在执行每个动作之前,会自动检查元素的可见性、稳定性和可操作性,等待逻辑内建在 API 里。Selenium 需要手动写显式等待,而 Playwright 的自动等待机制直接消灭了“写错等待”这一整类问题。

Bitrise 分析超过 1000 万次 CI 构建后发现,经历 flaky 测试的团队比例从 2022 年的 10% 涨到了 2025 年的 26%。自动等待不是锦上添花,它是把“修 flaky”的时间从日常工作中拿掉。

原生并行:不需要 Grid
Playwright 原生支持并行执行,配合 pytest-xdist 用 -n auto 按 CPU 核心数自动分配 worker。Playwright 的 browser context 是隔离的,并行 worker 之间不会互相污染状态。

实际数据:有团队把完整测试套件从 30 分钟以上压到了 10 分钟以内,靠的就是并行。testquality 的 2026 年基准显示,并行套件运行大约快 3 倍,Playwright 的吞吐量约 1200 条测试/小时,Selenium 约 600 条。

4 分钟不是一个脚本的功劳,是“单步更快 + 不再手写等待 + 并行跑起来 + 不需要维护 Grid”四件事叠加的结果。

三、一个可以照着改的最小配置
如果现在手上有一套跑 3 小时的 Selenium 套件,不需要推倒重来。按这个顺序改,每一步都有可量化的收益。

第一步:换连接方式,先拿单步收益。 把 driver 初始化改成复用 storageState 或 browser context,跳过每条用例重新登录和启动浏览器的开销。仅这一步,几百条用例的套件就能省出十几分钟。

第二步:删掉所有 sleep,换成 Playwright 的自动等待和 web-first 断言。 不要写 page.wait_for_timeout(3000),用 expect(locator).to_be_visible()。这一步不会让“执行时间”数字变好看,但会大幅降低 flaky 率——而修 flaky 的时间,才是 QA 日常最大的隐性成本。

第三步:开并行。pytest -n auto,或者用 Playwright 的 --shard=1/N 做分片。注意两点:确保用例之间没有顺序依赖(-n auto 会打乱执行顺序),以及并行 worker 数量不要超过 CPU 物理核心数,否则资源争抢会吃掉并行收益。

第四步:断言分层,别让“工具成功”冒充“业务通过”。 Playwright 快,但它不会自动帮你校验业务逻辑。UI 断言之外,用 Playwright 的网络拦截能力捕获关键请求,校验状态码和核心字段;涉及支付、订单、库存的场景,加一层业务状态查询。快不是目的,快且能拦住 Bug 才是。

四、避坑指南
坑一:只看单步速度,不做并行。 Playwright 单步快 45% 是事实,但 3 小时到 4 分钟靠的是并行和等待机制的叠加。只换工具不开并行,收益远低于预期。

坑二:并行 worker 开太多。-n auto 在 CI 容器里可能拿到不准确的 CPU 核数。显式设置 worker 数,别超过物理核心数。Selenium Grid 的教训已经证明,过度并行会因为资源争抢导致整体效能下降。

坑三:以为换了 Playwright 就不需要等待策略。 Playwright 的自动等待解决的是“元素可操作性”的等待,不解决“业务异步完成”的等待。如果被测系统有一个异步回调需要几秒才落库,你仍然需要显式等待业务状态,而不是指望自动等待。

坑四:迁移时把 Selenium 的写法原样翻译。 把 WebDriverWait 换成 page.wait_for_timeout 等于没换。Playwright 的收益来自用它的原生机制——自动等待、web-first 断言、context 隔离、网络拦截——而不是把旧代码逐行翻译成新 API。

坑五:为了 4 分钟牺牲断言质量。 最快的测试是通过率 100% 但什么都不检查的测试。三层断言(工具层、页面层、业务层)不能因为追求速度而砍掉任何一层。

最后
Selenium 的 3 小时,不是因为它“老”。是因为它的架构决定了每一次操作都要付一次 HTTP 往返的税,每一条用例都要付一次驱动启动的税,每一次并行都要付一次 Grid 维护的税。

Playwright 的 4 分钟,也不是因为什么黑科技。它把协议开销压下去了,把等待逻辑内建了,把并行变成了原生能力,然后把省下来的时间还给了 QA。

但最根本的变化不在工具,在谁做机器的活。3 小时里大量的“启动、等加载、写 sleep、修 flaky、维护 Grid”,本来就是机器该做的事。把这些交还给机器之后,QA 的时间才能花在“这个改动该重点测哪里、这个失败是不是真 Bug、这个版本能不能发”上。

工具的快,是为了让人的判断不被操作拖住。
本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。

相关文章
|
9天前
|
SQL 人工智能 JSON
淘宝 AI 购物助手:基于 LLM-as-a-Judge 的在线评测与质量归因实践
淘宝技术为AI购物助手构建了基于LLM-as-a-Judge的在线自动评测体系,通过生产会话清洗、分布式批量推理、六层Rubric标准及人工校准,实现购后服务多业务域的日级质量监控与故障归因,推动Agent质量持续改进。
|
1月前
|
SQL 测试技术 数据库连接
我用ChatGPT把回归测试从3天压到3小时,提示词全公开
本文分享如何用ChatGPT优化电商后台回归测试:通过提示词引导,实现用例梳理、自动化脚本生成与日志分析三步提效,将3天人工测试压缩至3小时。强调其辅助定位而非替代人力,聚焦释放工程师精力于高价值工作。
|
22天前
|
人工智能 缓存 Java
2026年美团职级薪资:测试开发L5—L10能拿多少?附AI测试社招面试题
本文解析2026年美团测试开发社招趋势:L5-L10年包44万–419万,股权占比随职级显著提升;能力要求已从传统自动化进阶为“基本功+AI测试”,涵盖Agent评测、大模型UI测试、AI Coding质量保障等实战方向,并附薪资、职级、面试与技能树全景指南。
|
1月前
|
人工智能 JSON 测试技术
Agent 里为什么不该什么都交给大模型?Jev 给了一个新答案
Jev是TypeSafe AI于2026年9月推出的首款“系统级决策模型”,专为AI工程化设计:不生成文本,专注分类、路由、评分等结构化判断,输出带置信度的类型化决策(如“高风险:92%”)。它响应快、成本低,填补Agent/RAG/测试平台中高频轻量判断的空白,推动AI架构从“一模型通吃”走向分层协同。
|
1月前
|
SQL 人工智能 安全
Agent Harness 又要多一层?Jev 开始接管这些高频判断
Jev作为新型System One Model,专司Agent中高频、明确的判断任务(如工具路由、技能筛选、上下文过滤、安全守门与执行复核),将LLM从繁重决策中解放,推动Agent架构向“规则+决策模型+LLM+工具”多层协同演进。
|
1月前
|
人工智能 自然语言处理 测试技术
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
Google开源的ARTEMIS是一款AI驱动的Android自动化测试框架,支持自然语言指令、跨App长流程操作、多模态控件识别(Accessibility+OCR+视觉模型),原生集成MCP协议,可无缝接入Antigravity等AI编程环境,实现“描述目标→自主规划→真机执行→结果分析”闭环,标志着移动端测试迈向AI Agent时代。
|
10天前
|
人工智能 自然语言处理 前端开发
Agent Skills + Playwright:打造会自己写 UI 自动化脚本的智能体
本文揭秘AI时代UI自动化新范式:告别硬编码脆弱脚本,用“侦察-执行”Agent技能重构测试稳定性。通过将定位规范(优先role/label)、等待策略、自愈流程写入可读Skill,让AI先看页面再写脚本,大幅降低因UI改版导致的用例失效。30分钟建规范,换来长期自愈力。
|
1月前
|
人工智能 Kubernetes 测试技术
会AI的测试开发,薪资到底能高多少?我扒了100份JD
2026年测试岗巨变:手工测试需求降47%,测开岗涨340%。AI测试开发年薪达35–100万+,远超传统测开;岗位核心已从“验证功能”转向“评测能力”,要求大模型、Agent、RAG等实战经验。
|
1月前
|
人工智能 监控 安全
DeepSeek Harness爆火,测试人能拿它做什么?这5个场景最实用
本文揭秘DeepSeek在测试领域的5大实战用法:用例生成、接口自动化、代码审查、单元测试、日志分析,辅以详细步骤与避坑指南。实测可减少60%-70%重复劳动,强调“AI代劳+人工审核”——替手不替脑。
|
24天前
|
JSON 人工智能 测试技术
Agent Skills、MCP、Function Calling 到底啥区别?一文讲透
本文厘清AI Agent三大核心概念:Function Calling(模型调用工具的“嘴”,负责结构化指令)、MCP(标准化连接协议, akin “插座”,解耦模型与工具)、Agent Skills(封装业务逻辑的“经验包”,含流程、异常处理与复用能力)。三者呈层级协作关系,非替代关系,共同构建可落地的自动化测试体系。