全部文章
发布与验证

让 AI 写 Playwright 定位器:删除指定一行

先定位目标行,再在行内按角色找按钮。

资料核验2026.11.12 · Playwright Test · 浏览器端到端测试

列表里每行都有删除按钮。AI 写下 getByRole('button', { name: '删除' }).first(),今天碰巧点中了目标。下次排序变化时,这条测试仍可能点到按钮,却删掉另一条记录。

交给编码助手的任务

把两条同名、编号不同的测试记录交给助手。要求它用角色定位目标行,在行内找删除按钮,并检查确认弹窗里出现同一编号。让列表逆序再跑,验证没有隐含位置依赖。

流程示意:用订单号定位行;行内点删除;对照相邻记录

用业务身份缩小范围

先找名称包含订单号的行,再在行内找删除按钮。确认弹窗里应出现同一订单号。提交后检查目标行消失,并保留另一条相邻记录作为对照。

如果行标题可能重名,夹具中放两个同名但编号不同的条目。这份数据能看出测试到底依赖名称、编号还是列表顺序。

只有顺序本身就是需求时,才用位置描述目标。比如验证最新创建的记录出现在首行。

先准备一个对照样例

样本是「退款申请 / ORD-10」和「退款申请 / ORD-11」。先把 ORD-10 放第二行,再放第一行,各跑一次。用 getByRole('row') 限定到对应编号,再在行内找按钮。断言另一个编号仍可见,证明没有误删。

用这些结果验收

  • 目标行消失。
  • 相邻同名记录仍在。
  • 改变排序后仍删除相同编号。

审查时容易漏掉什么

如果助手用 first 或 nth 让严格模式不报错,先问被测试的是排序还是删除。业务身份能定位时,测试应表达业务身份。若行没有可区分的可访问名称,核对页面是否提供了可读的编号。

如果订单行没有唯一可见编号,先确定产品允许读者根据什么识别目标。必要时补可见信息再写定位器。测试不能通过读一个实现细节来弥补界面没有区分目标的问题,因为人也可能点错。

资料来源