当前位置: 首页 > news >正文

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

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

很多测试同学在学 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自动化框架,希望这篇文章能帮你少踩一些坑。下一篇我们来聊「如何封装表格数据校验」,敬请期待!

http://www.jsqmd.com/news/1289756/

相关文章:

  • AG Kit核心功能详解:技能、工作流与多代理协作机制全解析
  • 2026 年AI图片设计编辑工具推荐:5款主流AI设计工具综合测评 - 科技快讯
  • 2026学术工具功能TOP6榜单[特殊字符]Paperxie实测排名,毕业党直接抄作业
  • Qwen-Image-Edit-Rapid-AIO:让AI图像编辑像说话一样简单 [特殊字符]
  • 仅限内部培训泄露!某头部AIGC团队禁用的5个扩写陷阱 3个缩写红线,第4条99%人正在踩
  • 微信支付AI Skill接入指南与实战解析
  • 行业内靠谱的GS暖风机公司有哪些
  • 30天随笔7
  • 告别混乱:几个PDF合成一个的实用技巧 - 软件工具教程方法
  • 2026 年七夕海报用什么AI工具可以做?品牌运营实测3个高频场景 - 小随科技
  • 筷子兄弟龙虾值得去吗?一份基于公开信息的深度测评 - 天涯视角
  • 2026 年AI图片设计编辑工具推荐:5款主流AI设计工具综合测评 - 子柔传媒
  • 服装新手拿货总压货?试试这套反向选品法,三个月清空库存
  • 为什么90%的AI视频生成失败?揭秘提示词结构缺陷与3步精准修复法
  • Melt:终极Ed25519 SSH密钥备份工具,助你用助记词轻松恢复密钥
  • NAD激酶活性检测:偶联酶比色法在辅酶代谢与氧化还原平衡研究中的精密工具
  • 实习第十四天日记周三【2026.7.29】
  • 揭秘达尔文.skill的9维度评估体系:提升AI技能质量的关键指标
  • 科研江湖之GalibierHub网站搭建的详细解读
  • REFramework终极指南:3分钟掌握RE引擎游戏模组开发与VR体验
  • Riva-Translate-4B-Instruct高级应用:多轮对话翻译与领域适配实战教程
  • 2026年南京GEO服务商测评:五家代表性公司实力对比 - 天涯视角
  • 为什么选择Inspectus?5大特性让LLM分析效率提升10倍
  • 2026年最新PDF合并方法,轻松把多个文件变一个 - 软件工具教程方法
  • 2026 年至今,瓯海正规的餐饮业洗碗机批发厂家哪家专业,别再人工洗盘子了,它竟能让餐饮门店省出双倍人工成本? - 行业推荐官[官方】--
  • 2026 年七夕海报用什么AI工具可以做?品牌运营实测3个高频场景 - 科技快讯
  • iOS微信增强插件:10大实用功能让你的微信体验全面升级
  • 解决gzx_dropdown_menu常见问题:开发者经验分享
  • SQLite表结构设计:过继与兼祧宗法关系的数据模型实现
  • 个体户注册完成后,记账、报税、年报完整流程(新手避坑|程序员适用 2026)