当弹出窗口仅要求输入密码时,Cypress 中的基本身份验证帮助

问题描述 投票:0回答:1

尝试在 cypress 中运行一个简单的测试,我导航到一个测试网站。问题是,所涉及的基本身份验证,只要求密码,不需要用户名,而且我似乎无法让它工作。

我尝试过以下方法,

Given("I log in to Staging", () => {
    cy.visit("https://mywebsite.com", {
      auth: {
        username:'',
        password: 'password',
      },
    });
  });

以及上述的所有排列。当我使用 null 作为用户名时,也没有运气。
作为参考,我附上了我的弹出窗口的图片。我还尝试通过授权标头执行此操作,以及将密码输入到访问命令中的 URL 中。在其他地方找不到此问题的参考

cypress basic-authentication cypress-cucumber-preprocessor
1个回答
0
投票

您似乎遇到了为该特定网页和浏览器设置的登录提示

以编程方式使用基本身份验证,但您必须提供用户名。

cy.visit("https://mywebsite.com", {
  auth: {
    username: 'please-fill-me-in',      <-- cannot be blank
    password: 'password',
  },
})

登录提示的确切来源似乎取决于应用程序或应用程序正在使用的框架,此功能没有标准的浏览器机制。您必须向网站开发人员了解使用什么机制来存储提示(本地存储、cookie 或会话存储)。

然后在

beforeLoad
钩子中提供清除,类似

cy.visit('http://localhost:3000/#dashboard', {
  auth: {
    username: 'some-username',      
    password: 'password',
  },
  onBeforeLoad: (contentWindow) => {
    Cypress.browser.cookies.remove(     
      details               // object
    )
  },
})

您也可以尝试使用不同的浏览器运行测试,看看提示是否消失。

© www.soinside.com 2019 - 2024. All rights reserved.