我了解赛普拉斯不允许从一个域切换到另一个域,因为它将出现以下错误:
chrome-error://chromewebdata/
但是,我需要一种解决方法。我正在为多个环境提供测试集:STAGE,DEMO,PROD。
使用DEMO和PROD,在身份验证阶段(用户名/密码),保持在同一域内:
https://[demo|www].foo.com
https://account.foo.com/auth
>>用户名>>密码https://[demo|www].foo.com/action...
使用STAGE,身份验证阶段转到另一个域:
https://[stage].foo.com
https://account.bar.com/auth
>>用户名>>密码https://[stage].foo.com/action...
因此,由于域翻转,赛普拉斯无法从VISIT重定向到AUTH。这阻止了STAGE的测试。
有什么建议的解决方法?
cy.request()
?引用:
谢谢,非常感谢您的协助。
如前所述,每个部署都有其自己的网站URL,后跟帐户登录URL。
首先需要使用帐户登录页面中的CSRF令牌,其URL在这里称为:$baseUrl
Cypress.Commands.add('cmdGetCSRF', ($baseUrl) => {
cy.log('COMMAND cmdGetCSRF');
expect($baseUrl)
.to.be.a('string')
.not.empty
cy.request($baseUrl)
.its('body')
.then(($body) => {
const $html = Cypress.$($body)
cy.log('html', $html)
const csrf = $html.find('input[name="__RequestVerificationToken"]').val()
expect(csrf)
.to.be.a('string')
.not.empty
return cy.wrap(csrf)
})
})
然后在将要执行登录body
的所requestOptions
提供的范围内,提供cy.request()
一次性CSRF令牌:
const body: { [key: string]: string } = {
email: $envCypress.account_username,
password: $envCypress.account_password,
__RequestVerificationToken: $csrfToken
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句