适配WebUI测试+Playwright方案

可直接复用的标准化模板(适配WebUI测试+Playwright方案)

模板均按结构化、可落地、适配大模型转化设计,支持直接复制到Excel/Markdown/团队知识库中使用,贴合团队当前Playwright方案的实施需求,同时衔接业务地图提效逻辑。

模板1:标准化手工测试用例模板(WebUI专用)

核心适配大模型转化自动化用例,严格遵循操作对象+动作+值的编写规范,字段覆盖测试执行全要素,支持按功能模块归类管理,示例为电商登录模块,可直接替换业务内容。

字段名填写要求/说明示例(账号密码登录)
用例唯一ID模块_功能_场景_序号(全局唯一,方便检索)user_login_pwd_001
所属功能模块按系统业务地图的模块层级填写(如XX系统-用户中心-登录模块)电商系统-用户中心-登录模块
用例优先级P0(核心必测)/P1(重要功能)/P2(一般功能)/P3(边缘场景)P0
测试场景类型正常场景/异常场景/边界场景正常场景
前置条件量化、明确环境/页面/数据状态(避免模糊描述)1. 测试环境已部署,网络正常;2. 测试账号test123已注册且未锁定;3. 处于系统登录页(URL:/login)
测试数据明确数据类型/来源/值(如数据池/固定值/接口生成)用户名:test123(测试数据池);密码:123456Abc(测试数据池)
操作步骤步骤序号+操作对象+操作动作+操作值编写,单步骤仅一个核心动作1. 点击【用户名输入框】,输入值test123;2. 点击【密码输入框】,输入值123456Abc;3. 点击【登录按钮】(红色,位于输入框下方)
预期结果量化、可判定(含页面跳转/元素显示/数据状态,避免“正常显示”)1. 页面跳转到系统首页(URL:/index);2. 首页右上角显示用户名“test123”;3. 浏览器Cookie中生成有效登录令牌
后置处理用例执行后恢复环境/数据状态(如退出登录/清除缓存,可选)点击【退出按钮】,退出当前账号登录
备注特殊说明(如依赖其他用例/需特定环境,可选)

填写规范补充(强制)

  1. 操作对象必须是页面实际可见元素(如“【用户名输入框】”而非“【输入框1】”);
  2. 异常场景需单独编写用例(如用户名空/密码错误/账号锁定),不可与正常场景合并;
  3. 边界场景需明确边界值(如密码6位最小长度/18位最大长度)。

模板2:大模型生成Playwright用例提示词模板(Python版)

基础版(无业务地图,快速使用)和进阶版(结合业务地图,高通过率),均按明确约束+固定格式+结果要求设计,大模型生成的代码可直接执行/少量优化,适配Playwright原生特性(步骤校验、报告、异常处理)。

版本1:基础版提示词(无业务地图,1-2周快速落地)

请你作为资深WebUI自动化测试工程师,将提供的标准化手工测试用例转化为**可直接执行的Python版Playwright自动化用例**,严格遵循以下要求: 1. 代码基础:基于Playwright最新稳定版,使用sync_api同步方式,无需异步代码; 2. 环境初始化:自动完成浏览器启动(Chrome)、页面打开、隐式等待(设置为5s),用例结束后自动关闭浏览器; 3. 元素定位:优先使用id/name/role,无则使用稳定的xpath(避免使用易变的class/标签定位); 4. 步骤校验:每个核心操作步骤后添加**元素存在/值校验**(如输入用户名后校验输入框值是否正确),校验失败抛出明确异常; 5. 预期结果:严格按手工用例的预期结果编写断言,断言失败时输出详细失败信息(如“页面未跳转到首页,当前URL为:/login”); 6. 测试数据:直接使用手工用例中的测试数据,单独定义变量存储(方便后续替换为数据池); 7. 代码结构:清晰分块(环境初始化→测试步骤→断言校验→后置处理→环境销毁),添加关键注释,无冗余代码; 8. 异常处理:对页面加载超时、元素未找到等常见异常做基础捕获,输出异常原因。 请直接生成完整可执行代码,无需额外解释,代码末尾无需加执行命令。 【待转化的标准化手工测试用例】 # 此处粘贴模板1的手工用例完整内容(含所有字段) 

版本2:进阶版提示词(结合业务地图,核心提效)

请你作为资深WebUI自动化测试工程师,结合**业务地图核心信息**和**标准化手工测试用例**,生成**可直接执行、单步可优化的Python版Playwright自动化用例**,严格遵循以下要求: 1. 代码基础:基于Playwright最新稳定版,使用sync_api同步方式,无需异步代码; 2. 环境初始化:自动完成浏览器启动(Chrome)、页面打开、隐式等待(设置为5s),用例结束后自动关闭浏览器; 3. 元素定位:**必须严格使用业务地图中定义的元素定位符**,无明确定位符的使用稳定的xpath(避免使用易变的class/标签定位); 4. 业务规则:严格遵循业务地图中的页面跳转、操作约束、异常处理规则,不得违反业务逻辑; 5. 步骤校验:每个核心操作步骤后添加**元素存在/值/状态校验**(如输入用户名后校验输入框值是否正确),校验失败抛出明确异常; 6. 预期结果:严格按手工用例的预期结果编写断言,断言失败时输出详细失败信息(如“页面未跳转到首页,当前URL为:/login”); 7. 测试数据:直接使用手工用例中的测试数据,单独定义变量存储(方便后续替换为测试数据池/接口调用); 8. 代码结构:清晰分块(环境初始化→测试步骤→断言校验→后置处理→环境销毁),添加关键注释,无冗余代码; 9. 异常处理:对页面加载超时、元素未找到、业务异常(如账号锁定)等做捕获,输出异常原因并终止用例; 10. 可优化性:核心操作步骤单独封装为小函数(如login_op(username, password)),方便后续单步智能优化和复用。 请直接生成完整可执行代码,无需额外解释,代码末尾无需加执行命令。 【业务地图核心信息(所属模块)】 # 此处粘贴该用例所属模块的业务地图核心内容(模板3的梳理结果,含元素定位、业务规则、页面跳转等) 【待转化的标准化手工测试用例】 # 此处粘贴模板1的手工用例完整内容(含所有字段) 

模板3:业务地图核心信息梳理模板(WebUI测试专用)

功能模块维度梳理,一套系统可拆分为多个模块分别填写(如登录模块、订单模块、购物车模块),梳理结果可直接嵌入模板2的进阶版提示词,或部署为大模型本地知识库,核心覆盖大模型生成用例所需的所有业务信息,示例为电商登录模块。

业务地图(XX模块)核心信息梳理表

模块名称:电商系统-用户中心-登录模块
维护人:测试工程师XXX
更新时间:202X-XX-XX
版本:V1.0(需求变更时同步更新版本)

梳理维度具体梳理项填写说明示例(登录模块)
1. 功能模块层级父模块/本模块/子模块明确系统模块的上下级关系、联动模块(如登录模块联动用户信息模块)父模块:用户中心;本模块:登录模块;子模块:无;联动模块:用户信息模块、权限管理模块
2. 页面关联关系所属页面/页面URL/页面跳转规则明确模块对应的所有页面,以及页面间的触发条件+跳转结果所属页面:登录页(/login);
跳转规则:
① 登录成功→首页(/index);
② 登录失败→停留在登录页;
③ 点击注册→注册页(/register);
④ 点击忘记密码→密码找回页(/find_pwd)
3. 核心元素信息页面+元素名称+定位符+元素类型+操作规则统一元素定位标准(优先id/name/role),明确元素的可操作类型(输入/点击/选择)和操作约束登录页:
① 用户名输入框:id=username | 输入框 | 仅支持字母/数字/下划线,最大20位;
② 密码输入框:id=password | 输入框 | 支持大小写+数字+特殊字符,6-18位;
③ 登录按钮:id=login_btn | 按钮 | 需先输入用户名+密码才可点击(否则置灰);
④ 错误提示框:class=error_tips | 文本框 | 失败时自动显示,成功时隐藏
4. 核心业务规则正常规则/异常规则/边界规则覆盖模块所有业务约束,是大模型生成断言和异常处理的关键① 正常规则:账号密码匹配→登录成功并生成登录令牌;
② 异常规则:用户名空/密码空→提示“请输入用户名/密码”;账号密码不匹配→提示“账号或密码错误”;连续5次失败→账号锁定10分钟并提示“账号已锁定”;
③ 边界规则:密码6位(最小)/18位(最大)→正常登录
5. 测试数据依赖数据类型/数据来源/数据约束明确模块测试所需数据的类型(账号/密码/验证码等)、来源(数据池/接口/固定值)、约束(是否已注册/是否锁定等)① 有效账号:用户数据池 | 已注册、未锁定、绑定手机号;
② 无效账号:固定值(如test_null/123456) | 未注册/已锁定;
③ 短信验证码:短信接口(http://xxx/api/sms) | 与手机号绑定,有效期5分钟;
④ 测试密码:密码数据池 | 符合6-18位、大小写+数字+特殊字符规则
6. 异常处理规则常见异常场景/处理方式/预期结果覆盖技术异常(网络/页面/接口)和业务异常(账号锁定/验证码过期),明确处理方式① 网络异常:登录时断网→提示“网络异常,请检查网络并重试”,保持登录页;
② 页面加载超时:登录页加载超过10s→抛出“页面加载超时”异常;
③ 验证码过期:使用过期验证码→提示“验证码已过期,请重新获取”;
④ 接口超时:登录请求接口响应超过5s→提示“请求超时,请重试”
7. 接口依赖关系核心接口/接口地址/请求方式/入参出参明确模块依赖的核心后端接口(如登录接口/验证码接口),可选(复杂业务模块必填)登录接口:http://xxx/api/user/login | POST | 入参:username/password;出参:code(200=成功/400=失败)、msg、token

维护规范(强制)

  1. 需求新增/变更/下线时,需在24小时内更新对应模块的业务地图,并同步版本号;
  2. 元素定位符发生变化(如前端修改id)时,优先更新业务地图,再同步优化自动化用例;
  3. 所有梳理结果同步至团队知识库(如Confluence/GitHub),确保测试/开发/产品统一认知。

Read more

前端 + agent 开发学习路线

背景:团队启动Agent项目,从零开始学习工程化AI开发 感谢ai老师写的学习指南。存档! 引言:从困惑到清晰 最近团队要启动Agent项目,我第一次接触这个概念时,只停留在“接入大模型API+优化Prompt”的浅层理解。经过大量学习和实践探索,我才发现工程化Agent开发是系统化的架构设计,而不仅仅是API调用。 这篇文章记录我从前端视角出发,探索Agent工程化开发的学习路径和实践经验。如果你也是前端/全栈开发者,想要在AI时代找到自己的定位,这篇指南应该能帮到你。 一、认知重塑:什么是工程化Agent? 1.1 我的错误认知 vs 现实 我原来的理解: Agent = 大模型API + Prompt优化 实际上的工程化Agent: Agent = 系统架构 + 可控执行 + 安全审查 + 领域适配 + 可观测性 1.2 Agent的分层架构(医疗场景示例) 你的主战场 任务分解器 工具路由器 记忆管理器 状态监控器

一文了解Blob文件格式,前端必备技能之一

一文了解Blob文件格式,前端必备技能之一

文章目录 * 前言 * 一、什么是Blob? * 二、Blob的基本特性 * 三、Blob的构造函数 * 四、常见使用场景 * 1. 文件下载 * 2. 图片预览 * 3. 大文件分片上传 * 四、Blob与其他API的关系 * 1. File API * 2. FileReader * 3. URL.createObjectURL() * 4. Response * 五、性能与内存管理 * 六、实际案例:导出Word文档 * 七、浏览器兼容性 * 八、总结 前言 最近在项目中需要导出文档时,我首次接触到了 Blob 文件格式。作为一个前端开发者,虽然经常听到 "Blob" 这个术语,但对其具体原理和应用场景并不十分了解。经过一番研究和实践,

Spring Boot携手Leaflet,点亮省级旅游口号WebGIS可视化之路

Spring Boot携手Leaflet,点亮省级旅游口号WebGIS可视化之路

目录 前言 一、旅游口号信息管理 1、写在前面的 2、空间属性关联 二、SpringBoot后台实现 1、系统调用时序图 2、Mapper数据查询实现 3、控制层接口实现 三、Leaflet集成实现WebGIS 1、省级数据展示及可视化 2、东北三省旅游口号 3、长三角城市群口号 4、珠三角旅游口号 5、西北地区旅游口号 四、总结 前言         在当今数字化浪潮汹涌澎湃的时代,地理信息系统(GIS)技术正以前所未有的速度改变着我们对世界的认知与探索方式。它不仅为科学研究提供了强大的工具,更在旅游、城市规划、环境保护等诸多领域展现出巨大的应用潜力。而当我们将目光聚焦于旅游行业,一个充满活力与创新的领域,GIS技术的应用更是如鱼得水,为旅游体验的提升和旅        游管理的优化带来了全新的机遇。         省级旅游口号作为各地旅游宣传的重要名片,承载着地域文化的精髓与旅游资源的亮点,是吸引游客、塑造旅游品牌形象的关键要素。然而,传统的旅游口号宣传方式往往局限于文字、

2026年,AI短剧正在爆发:一款开源工具带你从0到1做短剧

2026年,AI短剧正在爆发:一款开源工具带你从0到1做短剧

大家好,我是小阳哥。 2026年,一个新的风口正在成型——AI短剧。 今天给大家推荐一个开源的 AI短剧神器。工具是开源免费的,可以自己部署,也可以直接下载可执行文件运行。 工具把 AI 短剧拆解成了一步步可执行的流水线: 小说 → 大纲 → 剧本 → 分镜 → 视频 而且是多 Agent 协作生成,非常接近真实影视制作流程。 接下来,一步步带大家看下如何使用。(工具地址放在文末了) 一、基础设置 在开始制作前,我们需要设置AI 模型。共需要3类 * 文本模型(写剧情) * 图像模型(生成角色/场景/分镜图片) * 视频模型(生成短剧) 这里面基本支持了市面上所有的主流模型 为每个 agent 设置对应的模型 支持修改每个agent的内置提示词 二、创作流程(核心流程) 1. 新建项目 字段包括: