1 回答
TA贡献1865条经验 获得超7个赞
不知何故,我设法找到了解决问题的方法。由于baseUrl有一些路径扩展名/auth/login,每当我触发 cy.request() 时,即使凭据正确,它总是会重定向回登录页面。控制台中还有两个请求。
所以我所做的方法是在第一个带有参数的 POST cy.request() 之后立即发送另一个cy.request()带有参数的 GET 方法。从请求标头中,我发现每次用户登录时都会提交一个“令牌”。如果有另一种简单的方法让我知道。bodyqs
赛普拉斯版本:4.4.0
在里面beforeEach(),获取 'token' 值;
beforeEach(() => {
cy.visit('/');
cy.loadTokens();
cy.get('input[name="_token"]').invoke('val').then((val)=>{
const tokenValue = val;
cy.loginRequest(tokenValue);
})
})
以下是commands.js文件:
Cypress.Commands.add('loginRequest', function (tokenValue) {
return cy.request({
method: 'POST',
url: Cypress.config('baseUrl'),
followRedirect: true,
headers: {
'content-type': 'text/html; charset=UTF-8'
},
qs:{
_token: tokenValue,
username: 'your_username',
password:'your_password'
}
}).then(()=>{
return cy.request({
method: 'GET',
url: 'https://tenant-demo.somesitedev.net/dashboard',
followRedirect: false,
headers: {
'content-type': 'text/html; charset=UTF-8'
},
body:{
_token: tokenValue,
username: 'your_username',
password:'your_password'
}
})
})
});
添加回答
举报