如何用Playwright expect断言两个精确匹配值中的一个?
精确匹配维基百科桌面/移动域名的Playwright断言实现
针对维基百科会根据设备类型重定向到m子域名的问题,我们可以修改断言函数,自动生成桌面和移动两个预期URL,再用Playwright的toBeOneOf方法做精确匹配,无需模糊匹配。
修改后的函数实现
import { Page } from '@playwright/test'; export const assertThirdPartyInternetPath = async ( page: Page, targetPath: string, ) => { // 解析目标URL,生成对应的移动版URL const targetUrl = new URL(targetPath); const mobileDomain = targetUrl.host.replace('en.', 'en.m.'); const mobileTargetUrl = new URL(targetUrl.pathname, `https://${mobileDomain}`).href; // 断言当前页面URL是桌面版或移动版的精确匹配 expect(page.url()).toBeOneOf([targetPath, mobileTargetUrl]); };
调用方式
和原来完全一致,无需额外传参:
await this.assertThirdPartyInternetPath(page, 'https://en.wikipedia.org/wiki/Larry_Sanger');
逻辑说明
- 用原生
URL对象解析目标地址,避免手动拼接字符串可能出现的错误 - 替换域名中的
en.为en.m.生成移动版域名,完整保留原路径部分 - 使用Playwright内置的
toBeOneOf断言方法,精确匹配两个预期URL中的任意一个
这样既满足了精确匹配的要求,又自动兼容了桌面和移动设备的重定向场景。
内容的提问来源于stack exchange,提问作者Patrick Kenny
相关产品推荐
相关产品推荐

