import { chromium } from 'playwright';
(async () => {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
// 跳转到表格页面
await page.goto('https://example.com/table');
// 等待表格数据加载完成
await page.waitForSelector('div.table-row');
// 需要查找的数据
const data1 = {
date: '2022-05-07',
name: 'Alice',
age: '23',
};
const data2 = {
date: '2022-05-08',
name: 'Bob',
age: '25',
};
// 正则表达式,用于验证日期格式
const dateRegex = /\d{4}-\d{2}-\d{2}/;
// 获取所有表格行
const rows = await page.$$('div.table-row');
let foundDataCount = 0;
// 循环遍历每个表格行
for (const row of rows) {
// 获取日期、姓名、年龄单元格
const dateCell = await row.$('div:nth-child(1)');
const nameCell = await row.$('div:nth-child(2)');
const ageCell = await row.$('div:nth-child(3)');
// 如果单元格都存在,获取单元格的文本内容
if (dateCell && nameCell && ageCell) {
const [date, name, age] = await Promise.all([
dateCell.textContent(),
nameCell.textContent(),
ageCell.textContent(),
]);
// 判断是否为需要查找的数据
if (
dateRegex.test(date) &&
((name === data1.name && age === data1.age) ||
(name === data2.name && age === data2.age))
) {
foundDataCount++;
}
}
}
// 验证查找到的数据数量是否为2
expect(foundDataCount).toBe(2);
// 关闭浏览器
await browser.close();
})();
在这个版本中,我们在遍历表格行时,只对本次添加的两条数据进行验证。如果某行数据的日期、姓名、年龄与两条数据中的任意一条相等,就将查找到的数据数量加1。最终,我们只需要验证查找到的数据数量是否为2即可。