如何解决赛普拉斯路由和等待命令不起作用
我正在尝试从使用不必要的指定wait()时间转换自定义cypress命令。我具有此登录功能:
Cypress.Commands.add("login",(email,password,app_form_id) =>{
cy.server()
cy.route(('https://web.fulcrumapp.com/dash/' + app_form_id)).as('getForm')
cy.visit('https://web.fulcrumapp.com/dash/' + app_form_id) //formid
cy.on('uncaught:exception',(err,runnable) => {
expect(err.message).to.include('ajax')
done()
//return false
})
cy.get("body").then($body => {
if ($body.find("#user_email").length > 0) { //if redirected to login
cy.get("#user_email").type(email) //Email
cy.get("#user_password").type(password) //password
cy.get('#user_remember_me').click()
cy.get(".login-action").click()//login and wait
Cypress.Cookies.defaults({
preserve: ['_fulcrum_session','remember_user_token','intercom-session-nxff46cx','membership']
})
}
cy.wait('@getForm')
});
})
基本上,当您初次运行测试时,它会将您重定向到登录页面,而不是将其带到指定的URL,如果发生这种情况,它将登录您,然后将您带回到原始URL。每当赛普拉斯尝试访问登录页面时,总是会发生2个Ajax错误,这些错误必须忽略,否则测试将失败。在所有这些之后,我指定了wait命令,因为我希望它等待URL的页面加载。该函数可以很好地完成所有这些工作,但是最后的wait()命令似乎不起作用,因为它不会等待页面加载并始终返回以下错误:
CypressError: Timed out retrying: `cy.wait()` timed out waiting `5000ms` for the 1st request to the route: `getForm`. No request ever occurred.
51 | cy.visit('https://web.fulcrumapp.com/dash/' + app_form_id) //formid
52 | cy.on('uncaught:exception',runnable) => {
> 53 | expect(err.message).to.include('ajax')
| ^
54 | done()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。