Playwright中如何比较两个page.locator的值?
在Playwright中比较两个page.locator的值
当然可以,但不能直接比较page.locator实例本身——因为page.locator()返回的是定位器对象,不是元素的实际值。你需要先获取定位器对应的文本、属性值等实际内容,再进行比较。
举个贴合你场景的例子:
1. 获取文本内容后比较
如果产品编号是显示在页面上的文本,先通过textContent()获取实际文本值再对比:
// 获取第一个产品编号的文本 const poNumberText = await page.locator('xpath-to-first-po-element').textContent(); // 获取第二个产品编号的文本 const targetPoText = await page.locator('xpath-to-second-po-element').textContent(); // 执行比较逻辑(trim()用于去除文本前后空格,可根据实际情况调整) if (poNumberText?.trim() === targetPoText?.trim()) { console.log("两个产品编号一致"); } else { console.log("两个产品编号不一致"); }
2. 获取属性值后比较
如果产品编号是输入框的value属性,或者元素的其他自定义属性(比如data-po),用getAttribute()获取属性值:
const poNumberValue = await page.locator('xpath-to-po-input').getAttribute('value'); const targetPoValue = await page.locator('xpath-to-target-input').getAttribute('value'); if (poNumberValue === targetPoValue) { // 你的业务逻辑处理 }
3. 用Playwright断言直接验证
如果是自动化测试场景,推荐用Playwright自带的断言库,写法更简洁规范:
// 断言两个元素的文本完全相等 await expect(page.locator('xpath-to-first-po-element')).toHaveText(page.locator('xpath-to-second-po-element')); // 断言两个输入框的value属性相等 const targetValue = await page.locator('xpath-to-target-input').getAttribute('value'); await expect(page.locator('xpath-to-po-input')).toHaveAttribute('value', targetValue);
内容的提问来源于stack exchange,提问作者ddd
相关产品推荐
相关产品推荐

