【问题标题】:Cypress automatically deletes token from browser?赛普拉斯自动从浏览器中删除令牌?
【发布时间】:2021-11-09 08:39:39
【问题描述】:

所以我有一个简单的代码:

    it('login', function(){
    cy.visit('/login')
    cy.get('[formcontrolname="username"]').type(Cypress.env('myuname'))
    cy.get('[formcontrolname="password"]').type(Cypress.env('mypwd'))
    cy.get('[type="submit"').should('be.enabled').click()
    cy.url().should('include','/dashboard')
    })

在此之后,页面按预期登录,但在仪表板中没有显示用户,而是立即退出。

在柏树的日志中,我只得到 3 个“新网址”

在去度假 3 周之前,这有效,但由于某种原因回来后却没有。网页代码没有任何变化。

在 chrome 和 firefox 中手动尝试它可以按预期工作并且用户保持登录状态。 在执行测试时观察控制台,我注意到令牌在登录时存在,但之后由于某种原因它被删除了。

除了此处介绍的解决方法:https://github.com/cypress-io/cypress/issues/461 是否有其他方法可以按预期工作?

我需要根据用户角色测试不同的视图,因此我需要使用第三个用户更改角色然后登录,但如果用户不断退出,则无法做到这一点。

我也无法保存通用令牌,因为用户角色正在更改,因此令牌值也在更改。

提前致谢!

附: 哦,还有一件不幸的事情:它并不总是发生,发生在我运行相同测试的大约 80% 的时间里:(

【问题讨论】:

  • 您尝试过 cypher_null 的解决方案吗?
  • 能否请您显示您的 html 代码,仅显示登录部分?

标签: authentication token cypress


【解决方案1】:

在每个 itinstance 之后,赛普拉斯会在下一个实例之前清除所有 cookie。因此,可以预期您已注销。有时 Cypress 会让您产生仍然登录的错觉,但这只是因为页面仍在浏览器中加载。

对我有用的最简单的解决方案是在第一个 it 之前添加

beforeEach(function () {
        cy.preserveAllCookiesOnce()
    })

然后把这个放到你的command.js

Cypress.Commands.add('preserveAllCookiesOnce', () => {
    Cypress.Cookies.defaults({
        preserve: (cookie) => {
            return true;
        }
    })
})

或者,您可以将其添加到您的index.js 文件夹中的support

afterEach(() => {
    //Code to Handle the Sesssions in cypress.
    //Keep the Session alive when you jump to another test
    let str = [];
    cy.getCookies().then((cook) => {
        cy.log(cook);
        for (let l = 0; l < cook.length; l++) {
            if (cook.length > 0 && l == 0) {
                str[l] = cook[l].name;
                Cypress.Cookies.preserveOnce(str[l]);
            } else if (cook.length > 1 && l > 1) {
                str[l] = cook[l].name;
                Cypress.Cookies.preserveOnce(str[l]);
            }
        }
    })
    
});

【讨论】:

  • 是的,我得到的答案无处不在,但问题是这发生在同一个块中而不是其他块中,如果我想在我编写的代码失败后单击页面上的某些按钮。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-12
  • 1970-01-01
相关资源
最近更新 更多