TestCafe switchToWindow()方法:如何通过URL主机名部分内容切换窗口
TestCafe 按URL主机名部分内容切换窗口的解决方案
你之前的写法失效,核心原因是TestCafe中switchToWindow回调里的w.url默认是字符串类型,并非URL对象,直接调用w.url.host会得到undefined,导致判断逻辑无法生效。以下是几种可行的修正方案:
方案1:转换为URL对象后匹配host
将url字符串转为标准URL对象,再通过includes判断主机名:switchToWindow(w => new URL(w.url).host.includes('testcafe'))方案2:用正则直接匹配URL字符串
针对整个URL字符串做正则匹配,灵活匹配包含目标关键词的主机名:// 匹配任意包含testcafe的主机名 switchToWindow(w => /testcafe/.test(w.url)) // 更精准匹配主机名部分(避免URL路径中的干扰) switchToWindow(w => /https?:\/\/[^\/]*testcafe[^\/]*/.test(w.url))方案3:拆分URL字符串提取主机名
通过字符串拆分手动提取主机名部分再判断:switchToWindow(w => { const host = w.url.split('/')[2]; return host?.includes('testcafe'); })
如果你的TestCafe版本特殊配置后w.url.host是字符串类型,那之前的正则写法需修正为调用test()方法,而非直接用===匹配正则表达式:
switchToWindow(w => /.*testcafe.*/.test(w.url.host))
内容的提问来源于stack exchange,提问作者larry
相关产品推荐
相关产品推荐

