UI 自动化演进:从 Selenium / Appium 到 Skill + Playwright 自然语言驱动

一、简单背景:没有 AI 时的 UI 自动化在做什么、难在哪里

在 Selenium / Appium 为主的时代,UI 自动化本质是 「用代码告诉电脑:’先找到那个按钮,然后点它’」

听起来简单吧?但”找到那个按钮”这事儿,可比想象的要考虑的多了……

  • Web:DOM 结构、动态 class、iframe、跨域、浏览器差异。
  • 移动端:系统 WebView、原生混合栈、分辨率与厂商 ROM 差异。

典型困难

方面常见痛点
定位脆弱性id/class 随发版变化;列表虚拟滚动导致「第 N 行」不稳定;shadow DOM、Canvas 难以断言。
等待与同步显式 sleep 堆砌或复杂等待链;网络与动画导致偶发失败。
环境成本Driver 版本、真机/模拟器、CI 镜像与权限;多端要维护两套(甚至多套)工程。
断言表达力业务语义(「侧栏空态出现」)与底层定位(几十行 locator)脱节,复盘困难。
维护成本页面一改,成片用例红粉;新人读不懂「为什么当时这么写」。

总体上:

“跑一次还行,长期保持不挂?那就难了。而且用例越多,维护成本涨得越凶——不是加法,是乘法。”


二、当下形态:Skill 驱动 + 自然语言 + Playwright

Skill(技能包) 把「谁来测、测什么、怎么问、怎么落地到代码与命令」沉淀成 可被发现、可复用的说明 + 脚本;用户用自然语言触发后,由编辑器中的 Agent 按 skill 约束去:

  • 选择 Web / H5 / 原生、新增 / 编辑 / 执行 / 看报告;
  • 把场景拆成 可执行步骤与断言
  • 落到 真实仓库里的 Page Object、配置与 spec,而不是一次性临时脚本。

Playwright 的分工

Playwright 承担「稳定、跨浏览器、/trace、html report」的执行层,与 Skill 的分工大致是:

层级职责
Skill交互流程、模板话术、列表模块与用例、脚手架与打包校验;
Playwright浏览器自动化、项目结构、CI、报告。

相较于「仅录制」或「仅让模型随手写脚本」,Skill 将 工程约束(分层、配置、命名、登录态、多端开关)前置,减少不可维护的野代码。操作流程:

三、实战案例:一个「编辑」按钮的故事

重点:为什么会失败?怎么修正的?

踩坑现场传统做法(要折腾多久)Skill + Playwright 怎么搞定
「编辑」看着是按钮,其实是链接 <a class="ant-btn">反复试 getByRole('button')、查 AntD 文档、猜是不是版本不一样……半小时起步Agent 看 DOM 结构,直接告诉你:”这是个链接按钮,用 getByRole('link', {name: '编辑'})“,一次搞定,还记到 Page 层,下次同类按钮直接复用
侧栏弹层误判成弹窗 Drawer ≠ Modal,等不到 .ant-modal-title猜是动画没加载完?加 sleep?换定位器?截图对比?越改越乱Agent 看到 .ant-drawer-title,直接纠正:”这是 Drawer,不是 Modal”,锚点改成 Drawer + 文案,定位稳了
配置散落各文件 BASE_URL、登录态、Tab 文案到处写改一处漏三处,环境切换靠”复制粘贴大法”Skill 引导你填 .envsrc/config 统一管理,切环境只改一个变量
Web / H5 两套脚本要么复制一份改改,要么一堆 if (isMobile) 判断`TEST_TARGET=web

这不是”AI 神奇地猜对了”,而是:

  • Playwright UI 的 Pick Locator 把真实 DOM 结构摆在眼前
  • Agent 理解结构后,告诉你”为什么之前错了、应该怎么改”
  • 改完后的经验沉淀到 Page 层和 Skill,下次遇到类似问题秒解

一句话:踩坑 → 理解 → 修正 → 沉淀。下次不用再踩了。


四、应用场景与效能

实践使用场景

场景举例场景
登录流程下单页登录校验,卖家在商详页登录后页面刷新展示,web页面登录后菜单展示,功能按钮鉴权
表单提交新增用例,商品发布流程,售后申述流程,后台订单处理
弹窗交互商详、首页弹窗,弹窗点击跳转、弹窗关闭、弹窗频控、弹窗优先级
列表操作分页逻辑、页面加载、页面按钮展示/点击、列表tab切换
搜索验证输入关键词验证结果,搜索输入框、搜索中间页展示、搜索结果页
多端适配移动端提交售后–后台售后处理,一个场景跨端处理

开发流程闭环

在编码用例平台需求时,先录制自动化用例作为基准快照,开发完成后进行回放,自动检测修改的组件是否影响了关联页面【References】的样式与逻辑是否正常运行,形成”录制→开发→回放→验证”的闭环,确保新增功能不破坏既有交互。

UI 自动化有效控制了代码变更的影响范围,降低了开发调试时的回归风险。

综合提效汇总

维度传统耗时Skill + Playwright 耗时提效幅度
首次编写30-60分钟5-10分钟↓ 80%
调试定位30-60分钟5-10分钟↓ 85%
维护修复2-4小时10-30分钟↓ 90%
协作参与高门槛低门槛PM/QA 可参与
多端复用两套代码一套代码↓ 50%代码量
失败复盘30-60分钟5-10分钟↓ 85%

五、后续发展方向

  1. 目前 Playwright 的元素定位还是依赖人工 selector,页面 DOM 结构变动时易失效。

未来将评估引入 agent-browser-use 类的 AI 识别 + AI 执行方案:

  • 视觉识别 + 语义理解:自动定位页面元素,无需人工维护 selector。LLM 自己看页面、自己定位元素,页面小改不影响
  • 全场景覆盖:从测试扩展到所有网页操作(测试、爬虫、数据录入、账号管理、RPA)
  • browser-use = LLM 驱动的浏览器智能体:自己会思考、会操作、会适配,有记忆,多模态理解,错误重试。写一句话任务,几分钟搞定,几乎不用调试

这决定了 browser-use 面向 AI 操作浏览器的形式会是 AI 时代的第一份 UI 自动化答卷


六、结语:前后对比到底改变了什么?

场景之前怎么搞之后怎么搞
第一次写用例翻文档找定位器,或者录一遍再手动改代码说一句”测试编辑按钮”,Agent 帮你写到指定目录,不用想放哪儿
定位失败了靠自己经验排查,解决了也没人知道,下次同事还得从头猜Agent 帮你看 DOM,告诉你”这是个链接按钮”,顺便记到 Skill 模式库——下次同类问题秒解
配置和登录态账号密码写死在代码里,或者散落各文件,改一处漏三处Skill 提醒你用 .env,登录态统一存到 storageState——安全又方便
页面改版了改个 class 名,一堆用例跟着挂,逐个修定位器Page 层集中管理定位,改一处全用例生效;spec 只管业务流程,不用操心底层
非开发同事协作看脚本像看天书,”这行代码干嘛的?”用例步骤跟业务话术对齐,PM/QA 能看懂在测什么
Web 和 H5 两端要么两套脚本,要么代码里一堆 if (isMobile)同一套 spec,`TEST_TARGET=web
失败后复盘靠注释猜”当时为什么这么写”,日志不够还得靠回忆Playwright 自带 trace 和 HTML 报告,每一步截图、DOM、网络请求都有,版本库还能看改动历史

核心变化

不是”少写几行代码”,而是:

  • 以前:踩坑经验散落在每个人的笔记里,走了就没了
  • 现在:踩坑 → 沉淀到 Skill/Page → 下次同类问题秒解

想了解更多转转公司的业务实践,点击关注下方的公众号吧!

声明:来自转转QA,仅代表创作者观点。链接:https://eyangzhen.com/8055.html

转转QA的头像转转QA

相关推荐

添加微信
添加微信
Ai学习群
返回顶部