You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Playwright的toHaveText中匹配数组部分值(忽略时间戳)

解决Playwright表格日期时间戳忽略问题

方案1:正则表达式直接匹配(推荐)

Playwright的toHaveText支持在数组参数中传入正则表达式,可以直接对带时间戳的日期列做模糊匹配,不用拆分定位每个<td>。

修改代码如下:

const tableRowData = this.page.locator(`//table[@class="myTableClass"]//td`);
await expect(tableRowData).toHaveText([
  'John',
  'Smith',
  'Ohio',
  /Aug 22, 2023.*/ // 匹配以目标日期开头的任意文本,忽略后续时间戳
]);

只要单元格文本以指定日期开头,不管后面的时分秒、时区是什么,都会匹配成功。

方案2:自定义匹配函数(提升可读性)

如果需要复用这种日期匹配逻辑,可以写一个简单的自定义函数:

// 自定义函数:校验文本是否以目标日期开头
function startsWithDate(expectedDate) {
  return (text) => text.startsWith(expectedDate);
}

// 使用示例
await expect(tableRowData).toHaveText([
  'John',
  'Smith',
  'Ohio',
  startsWithDate('Aug 22, 2023')
]);

这种方式可读性更强,适合需要多次校验日期的场景。

额外提示

  • 正则里的日期格式要和页面渲染的完全一致(比如月份缩写、逗号、空格位置)
  • 如果日期格式有变动可能(比如数字格式8/22/2023),可以调整正则为通用格式,比如/\d{1,2}\/\d{1,2}\/\d{4}.*/

内容的提问来源于stack exchange,提问作者Andy Giebel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:57:33