如何在Cypress中仅保存URL的部分内容(不含域名)
Cypress提取URL路径并对比的实现方法
方法一:使用原生URL对象解析路径(推荐)
利用JavaScript内置的URL对象可以可靠提取URL中的路径部分,不受域名格式变化影响:
cy.url().then(currentUrl => { const urlObject = new URL(currentUrl); const targetPath = urlObject.pathname; // 得到如/en/info/is/here/的路径 // 可选:将路径存入Cypress环境变量,方便后续跨步骤使用 Cypress.env('pagePath', targetPath); });
方法二:直接在对比步骤中完成解析
如果不需要跨步骤复用路径,可以直接在断言环节完成解析和对比:
cy.url().then(currentUrl => { const currentPath = new URL(currentUrl).pathname; // 获取目标元素的href并对比 cy.get('a.compare-link') .invoke('attr', 'href') .should('equal', currentPath); });
补充说明
- 如果目标href包含查询参数(如
/en/info?is=1),可以用urlObject.pathname + urlObject.search来完整提取域名后的部分 URL对象能自动处理带端口、子域名的复杂域名场景,比手动字符串分割更稳定
内容的提问来源于stack exchange,提问作者Prokrastinosaurus
相关产品推荐
相关产品推荐

