尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

玩转 Playwright + TypeScript:手把手带你封装一个工业级 UI 自动化框架(UI测试第二天)

玩转 Playwright + TypeScript:手把手带你封装一个工业级 UI 自动化框架(UI测试第二天)
📅 发布时间:2026/7/29 22:04:52

一、为什么你要关注这篇博文?

很多测试同学在学 UI 自动化时,最大的困惑是:写几十个脚本容易,但如何搭建一个能支撑上百个用例、好维护、易扩展的框架?

这篇文章不讲虚的,直接给你看一个真实落地的项目结构,并带着你跑通第一个"新增操作"用例。

你将收获:

  • 一套清晰的 POM + Fixtures 分层架构

  • 一个可直接复用的 BaseOperatePage 基类设计

  • 第一个完整的"查询"操作自动化用例

二、项目全景:先看骨架,再填血肉

先看一眼项目整体结构(只展示核心部分):

UItest/

├── playwright.config.ts # 运行时配置(浏览器、并发、重试、报告)

├── .env / .env.example # 环境敏感配置(封装地址、登录账号密码、邮箱等)

├── package.json / tsconfig.json #项目依赖

│

├── tests/ # 【测试编排层】测试用例层

│ ├── pages/ # 页面对象模型 (Page Object Model) │ │ └── BaseOperatePage.ts # 页面公共基类(核心 POM 封装)

│

├── fixtures/ # 【依赖注入层】

│ ├── fixtures.ts # 基础Fixtures(自动登录、角色切换)

│ └── test-fixtures.ts # 增强Fixtures:注入日志、截图、数据源

│

├── utils/ # 【工具服务层】

│ ├── logger.ts # 日志系统

│ ├── table-helper.ts # 表格数据提取(Element UI / VXE Table)

│ ├── screenshot-helper.ts # 截图辅助

│ ├── FileUploader.ts # 文件上传

│ ├── file-exporter.ts # 文件导出(下载)

│ ├── excel-writer.ts # Excel 写入

│ ├── excel-reader.ts # Excel 读取

│ ├── csv-exporter.ts # CSV 导出

│ ├── csv-reader.ts # CSV 读取

│ └── types.ts # 公共类型定义

│

├── testdata/ # 【数据层】CSV / Excel / JSON 数据源

├── reporters/ # 【报告层】自定义邮件报告器

└── .github/workflows/ # 【CI/CD层】GitHub Actions 流水线

框架设计理念:

目录职责描述
pages/页面元素 + 操作具体功能操作步骤
fixtures/上下文环境(登录、日志)比如每个功能新增、修改、查询都需要作为单独Test,都需要登录操作,就直接把登录封装在这里。还有日志的一些配置
utils/通用工具箱各种工具,操作系统时导入、导出等操作,还有读取Excel/csv等文件的工具封装
testdata/测试数据把测试数据和脚本独立开,让代码更具有复用性,别人只需要修改数据即可运行

三、框架搭建

这里我换了一个工具使用AI演示(用VSCode里面trae也可以,主要要排队所以换一个AI工具)。

(1)建一个空的文件夹”UITest",根据.md文件叫AI初始化项目,md文件就是对该项目工程一个概述简介

(2)初始化的项目不能直接用,需要写入一些基础配置,如环境配置、文档读入、导出等处理,这个过程比较麻烦,你要怎么处理这些共同的配置,可告诉AI生成,然后同意AI的写入,尽量描述清楚,不然一直都不是自己想要的。

(3)我这里已经搭好了框架,可直接使用,使用前先安装依赖和浏览器插件

四、实战:写一个百度新闻页"查询"的测试用例

(1)录制新用例

注:注意勾选上“显示浏览器”,避免每次都要新打开浏览器

(2)打开浏览器,输入地址开始录制脚本(百度网作为例子,跳过登录)

注:实际脚本录制结束后,删除前面的那一串登录信息(因为登录和退出已经在fixtures里面进行封装),保留从点击父级菜单开始;核对里面的页面元素步骤;基本都是click+fill组合,click是点击,fill里面是输入值,其他的都属于多的操作,需要删除,如下图:

页面长这个样

百度查询录制:

录制的脚本

五、运行结果

点击运行,脚本自动打开浏览器按脚本步骤运行

六、下一步你可以玩什么?

  • 参数化测试:用testdata/下的 CSV 批量跑不同用户数据

  • 表格断言:利用table-helper.ts校验列表数据

  • 文件上传/导出:用FileUploader/file-exporter测试导入导出

  • CI 集成:.github/workflows/playwright.yml让测试在 PR 时自动跑

七、文末福利

📦 由于篇幅限制,完整的 BaseOperatePage 源码 + 新闻查询 test 已经打包好,后台回复「ui框架」 获取完整项目骨架,拿来即用!


如果你正在搭建UI自动化框架,希望这篇文章能帮你少踩一些坑。下一篇我们来聊「如何封装表格数据校验」,敬请期待!

相关新闻

  • 2026学术工具功能TOP6榜单[特殊字符]Paperxie实测排名,毕业党直接抄作业
  • 仅限内部培训泄露!某头部AIGC团队禁用的5个扩写陷阱 3个缩写红线,第4条99%人正在踩
  • 告别混乱:几个PDF合成一个的实用技巧 - 软件工具教程方法

最新新闻

  • 免费FDTD电磁仿真终极指南:从零开始掌握Meep光子学模拟
  • EventBus事件订阅与通知机制:构建响应式Elixir应用的关键
  • 岳阳除甲醛公司深度调查对比:新房装修除醛该如何挑选本地服务商 - 专注室内空气检测治理
  • App及小程序蓝牙开发的几个重要步骤
  • MacHyperVSupport完全指南:让macOS在Hyper-V虚拟机中焕发新生
  • AlohaMini Python编程指南:从基础控制到高级任务规划

日新闻

  • 金融舆情监测系统:多语言情感分析与实时可视化技术解析
  • QT C++调用Python异常处理:PyBind11实战与跨语言编程指南
  • A-47双麦回音消除模块:主次麦空间分布与差分连接对ENC性能的影响

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号