前言
团队将 UI 自动化由 Selenium 迁移至 Playwright,在 AI 大模型加持下,脚本质量稳定和编写效率得到明显提升。本文从 Playwright 与 Selenium 对比出发,分享思路与设计。
一、playwright 与 selenium 对比
从原理上对比:
- Selenium 使用代理 webdriver 协议来统一接口对接不同厂家的浏览器
- Playwright 直接和各个浏览器原生底层调试协议来通信,比如 CDP(Chrome Devtools Protocol)
Selenium 采用套一层的方式解决自动化问题,无法获取浏览器很多原生的底层数据(如网络请求参数、控制台信息),执行速度也天然慢于 Playwright。在 AI 时代,Selenium 因底层原理限制,相关 AI 应用难有明显成果。反观 Playwright,结合 AI 的应用有很多亮点,近期团队已将驱动 UI 的底层重构切换为 Playwright。
二、AI-playwright MCP
如何让 AI 与 web 自动化有效结合并带来效率提升?利用 MCP 让 AI 模型分析页面的 DOM 元素,驱动浏览器,告诉 AI 模型记住页面交互细节。它会抓取页面情况帮助分析元素结构和交互过程,从而协助编写 UI 自动化测试。
关于模型选择,目前各 LLM 百花齐放,第一批梯队的大模型对普通人来说差异不大。AI 模型也会犯错,建议原则是 AI 辅助,半自动档位配合工作。不要偷懒不去 review AI 生成的代码,有错误必须反馈;积累有效的 prompt;在 AI 生成代码毫无逻辑时立即停止手动 coding 教会它;在代码复杂时手动拆分模式加入合理设计模型。
安装 playwright MCP 请参考 Node 环境的 MCP Server 安装文档。调研过市面上一些 AI 测试工具如 TestCraft、Testim.ai、applitools 等,封闭式的测试用例管理和编写封装性太强且收费,很难适合大多数业务需求。


实际业务中仍需修改,demo 演示的是 AI 分析页面并输出脚本的能力。
三、Playwright 封装设计建议
分层设计思想指导下,考虑可维护性和可扩展性,主要封装思路如下:
- Playwright 提供原生操作浏览器的能力,基于底层封装业务 Playwright 即 XxxPlayWright
- 在 XxxPlayWright 基础之上将代码组件化,UI 控件大多 DIY,基于 XxxPlayWright 将操作告警框、下拉框等组件模块化,可使用 Mixin 等结构型设计模式
- 基于模块组件化的代码,封装业务关键字层,提供业务的 UI 操作能力
- Case 上层只调用 UI 业务代码关键字
robotframework-browser 介绍
博主使用的自动化测试框架是 Robot Framework,针对 RF 简单介绍相关知识。如果使用 pytest 原理类似。基于 RF 官方库再二次封装。
Browser library powered by Playwright。关键点:new browser、new page 等无需关心资源清理问题,RF 框架可以自动清理,确保资源隔离。自动关联已经存在的资源和自动启动需要的资源。
安装 Only Python 3.9 or newer is supported. From Node side 18, 20 and 22 LTS versions are supported.
- Install node.js e.g. from https://nodejs.org/en/download/

