我目前面临 cy.origin 的问题,并处理有时在身份验证时显示的“保持登录状态”的额外窗口。
我正在关注 https://docs.cypress.io/guides/end-to-end-testing/azure-active-directory-authentication 来自赛普拉斯的本指南,并将其设置完全相同,并且它是跑步。
这里的问题是,在运行此函数时:
function loginViaAAD(username: string, password: string) {
cy.visit('/PRODUCTURL')
// Login to your AAD tenant.
cy.origin(
'login.microsoftonline.com',
{
args: {
username,
password,
},
},
({ username, password }) => {
cy.get('input[type="email"]').type(username, {
log: false,
}),
cy.get('input[type="submit"]').click()
cy.get('input[type="password"]').type(password, {
log: false,
}),
cy.get('input[type="submit"]').click()
//WE WILL NEVER HIT THIS LINE
}
)
cy.origin('login.microsoftonline.com', () => {
//WE WILL NEVER HIT THIS LINE
cy.get('input[type="submit"]').click()
})
cy.url().should('equal', 'PRODUCTURL')
cy.get('#welcome-div').should(
'contain',
`Welcome ${Cypress.env('aad_username')}!`
)
}
我一生都无法执行任何其他操作来处理窗口,只需单击一下即可。我在函数中突出显示了一些未命中的注释行,在我看来应该如此。
提交密码后,我得到“(页面加载)--等待新页面加载--”,就好像赛普拉斯希望它现在将我们路由到原始 URL(这将是现在登录的产品)。
如果有人可以提供任何信息来说明为什么无论我在什么地方或在哪里添加额外的代码行,它都不会执行任何其他操作,我将非常感激!
我希望能够在 cy.origin 函数内执行额外的操作,我尝试过调试行来查看函数中的位置被命中,但一旦我们提交了密码,它就会期待新的 URL。
我也有同样的问题。解决了吗