【问题标题】:401 - Unauthorized in cypress io auto testing401 - 在 cypress io 自动测试中未经授权
【发布时间】:2018-11-28 19:55:58
【问题描述】:

第一次为内部网站(http://XXXX:8089/)编写 Cypress(cypress Io 框架)自动测试。访问本网站主页需要使用活动目录的特殊权限(获取windows凭据并检查用户是否属于某个组或具有某个角色)。测试脚本非常简单:

describe('The Home Page', function() {
it('successfully loads', function() {
cy.visit('http://XXXX:8089/')
  })
})

收到 401 - 未经授权的错误消息。尝试将 url 替换为像 http://username:password@xxxx:8089/ 这样的嵌入式 Windows 凭据,得到了同样的错误。无法通过谷歌找到解决方案。希望有人能帮我解决这个问题。非常感谢。

【问题讨论】:

  • 快速提问,如果您将链接粘贴到 Chrome 浏览器中,http://username:password@xxxx:8089/ 是否有效?
  • 是的。它将重定向到xxxx:8089
  • 看起来很像那个。所以到目前为止这个问题没有任何解决方案吗?
  • 这是一个解决方案,但涉及实现某种代理

标签: automated-tests ui-automation http-status-code-401 cypress


【解决方案1】:

这是我在每次测试前登录的方式。

const login = () => {
    cy.visit('http://0.0.0.0:8080/#/login');
    cy.get('#username').type('username');
    cy.get('#password').type('1234password$');
    cy.get('#login-button').click();
}

describe('UI', () => {
  // beforeEach(login);
    beforeEach(() => {
        login();
        Cypress.Cookies.preserveOnce('session_id', 'remember_token');
  });

});

【讨论】:

  • 我认为这不能解决问题。如果 AD 安全性到位,您将无法找到任何 DOM 元素,例如 #username。该页面将无法加载,您将获得 401。
【解决方案2】:

我遇到了这个问题并通过以下方式解决:

添加 {failOnStatusCode: false} 将忽略该状态,因为 Cypress 将在任何 40X 状态下停止运行,因此 {failOnStatusCode: false} 将告诉 cypress 继续

cy.visit('/', {failOnStatusCode: false});

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2018-05-19
    • 2020-06-11
    • 2017-02-22
    相关资源
    最近更新 更多