Cypress 13点击同超域链接不携带Cookie,原Cypress11方案失效原因咨询
测试场景
点击指向同一超域的页面链接,该URL请求会重定向至其他域名。但当前问题是:源页面的Cookie未随请求携带,导致请求失败、重定向无法完成。
Cypress 11 可行方案
在Cypress 11中,以下代码可正常运行:
cy.contains('ACTIVATE ACCOUNT').invoke('removeAttr', 'target').click();
Cypress 13 临时解决办法
在Cypress 13中,必须显式将源页面的Cookie添加至visit请求才能正常执行:
cy.contains('ACTIVATE ACCOUNT').invoke('attr', 'href') .then(initialHref => { cy.getCookies().then(cookies => { const cookieString = cookies.map(cookie => `${cookie.name}=${cookie.value}`).join('; '); cy.visit(initialHref, { headers: { 'Cookie': cookieString, } }) }); });
疑问
为何原Cypress 11的方案在Cypress 13中失效?我在更新日志中未找到相关说明。
最初我以为这与cy.origin有关,但链接属于同一超域;也考虑过cy.session,但它用于测试间共享会话状态。另外,Cypress现在将Cookie域设置为主机域而非超域,但这也不是问题所在——关键是click触发的visit请求不再携带Cookie。
补充说明
我希望继续使用click方法,因为想要在端到端测试中模拟真实用户操作。
内容的提问来源于stack exchange,提问作者Ben_R
相关产品推荐
相关产品推荐

