在 cypress 中,我们通过使用正确的授权标头来处理基本的弹出身份验证,即根据 cypress 文档在 url 中提供用户名和密码
cy.visit('https://username:[email protected]')
或
cy.visit('https://example.cypress.io/', {
auth: {
username: 'username',
password: 'pwd',
},
})
但是,当我使用这种方式处理使用身份验证弹出窗口的应用程序时,即使在提供凭据后,我的弹出窗口也会再次出现。我可以登陆应用程序的主页,但再次出现登录弹出窗口。
我尝试调试该问题并使用其他几个解决方案,例如使用 cy.intercept() 将参数预先注入正在进行的请求中。 (假设用户名和密码在其他地方定义以确保安全)
let isIntercepted=false;
cy.intercept('https://example.cypress.io/**',(req)=>
{
if(!isIntercepted)
{
req.url=`https://${username}:${pwd}@example.cypress.io`;
isIntercepted=true;
}
req.continue();
})
cy.visit(`https://${username}:${pwd}@example.cypress.io`)
但是在某些地方这并不起作用。
这里有任何线索,如何解决这个问题?我应该去哪里尝试寻找这种场景
我正在使用赛普拉斯 12.8.1
我尝试使用上面提到的赛普拉斯文档中给出的方法,还尝试使用堆栈溢出和其他帮助网站上的其他可用解决方案,但找不到解决我的问题的任何解决方案。
我希望直接在 url 中使用用户名和密码标头成功登录网站,但解决方案不起作用,它给了我另一个登录身份验证弹出窗口。
尝试升级到Cypress 13.6.1该版本中有一个与基本身份验证标头相关的错误修复。
修复了在新选项卡中打开的页面或下载缺少基本身份验证标头的问题。修复#28350。
所描述的问题有所不同,但也许修复也能帮助您解决问题。
当我需要下载文件时,它会在 chromium 浏览器中打开另一个选项卡,凭据不会传递到新选项卡,因此我的 api 要求我再次进行身份验证,