在Playwright的URL断言中使用变量失败,寻求解决方法
问题解决:Playwright URL断言中使用变量
问题分析
你的代码存在两个关键问题导致变量无法被正确识别:
textContent()是异步方法,必须用await才能获取到实际文本内容- 正则表达式里直接写
('LastResult')是把它当成了字符串字面量,没有引用变量的实际值
修正后的代码
const LAST = page.locator('#Selector1'); // 用await获取textContent的实际值 const lastResult = await page.locator('#Selector2').textContent(); await page.goto(Env.baseUrl + '/Search'); await LAST.click(); // 使用RegExp构造函数,传入变量生成正则表达式 await expect(page).toHaveURL(new RegExp(`Search#page=${lastResult}`));
补充说明
- 变量名建议遵循JS小驼峰编码规范(如
lastResult),提升代码可读性 - 如果
lastResult里包含正则特殊字符(如.、*、?等),需要先转义避免匹配出错:const escapedLastResult = lastResult.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); await expect(page).toHaveURL(new RegExp(`Search#page=${escapedLastResult}`));
内容的提问来源于stack exchange,提问作者DgutOrig
相关产品推荐
相关产品推荐

