cy.origin将用户重定向到空白页面



场景:我正在从本地主机上提供的应用程序中单击登录按钮。它通过cy.origin将我重定向到azure sso登录身份验证执行良好。用户成功登录到应用程序。但它将我重定向到一个空白页面,因此其余的it块都会失败。下面所附的代码运行良好,但一旦第一个IT块通过,在执行第二个IT块时,页面将设置为about:black,因此测试用例失败。问题:应该有什么解决方法,以便我可以继续对测试中的应用程序进行测试?

第二个描述获取失败的

Cypress.Commands.add('authenticate', () =>{

cy.visit('http://localhost:8080/')
cy.get('input[value="***"]').click();
cy.origin(`https://login.microsoftonline.com/`, () => {

cy.wait(3000)
cy.get('#i0116').type('username')
cy.get('#idSIButton9').click()
cy.wait(3000)
cy.get('#i0118').type('password')
cy.wait(2000)
cy.get('#idSIButton9').click()
cy.wait(2000)
cy.get('#idSIButton9').click();        

})

cy.wait(6000)
cy.url().should('contain', 'Welcome') 

})

根据文档,该行为是由设计的

看看cy.origin((

cy.origin((命令目前是实验性的,可以通过在Cypress配置中将experialSessionAndOrigin标志设置为true来启用。

启用此标志会执行以下操作:

  • 它在每次测试的开始时添加了以下新行为(这将是Cypress未来主要版本中的默认行为(

    • 页面被清除(通过将其设置为about:blank(

如果通过";第二个描述失败了";你的意思是第二次测试没有访问欢迎页面,那么在第二次考试开始时明确访问cy.visit('http://localhost:8080/')

这是使用cy.origin.时推荐的方法

顺便说一句,您应该在配置中将http://localhost:8080/设置为baseUrl,并使用来自Cypress最佳实践的cy.visit('/')

Cypress.Commands.add("session_thing", (email, password) => {
cy.session([email, password], () => {
cy.visit('http://localhost:8080/AdminWebapp/Welcome.html')
cy.get('input[value="Log In With Office 365"]').click();
cy.origin(
`https://login.microsoftonline.com/`,
{ args: [email, password] },
([email, password]) => {
cy.wait(3000)
cy.get('#i0116').type(email)
cy.get('#idSIButton9').click()
cy.wait(3000)
cy.get('#i0118').type(password)
cy.wait(2000)
cy.get('#idSIButton9').click()
cy.wait(2000)
cy.get('#idSIButton9').click();  
}
);
cy.url().should('contain', 'Welcome')

});});

使用上述代码实现了所需的行为。它在beforeEach钩子中恢复会话。我只是在每个IT块中调用cy.visit('/'(,并执行所需的操作,这与会话功能有点非常快。

相关内容

  • 没有找到相关文章

最新更新