【问题标题】:JSESSIONID cookie not preserved using CypressJSESSIONID cookie 未使用赛普拉斯保留
【发布时间】:2021-07-21 17:14:26
【问题描述】:

我们目前正在使用 cy.request() 方法登录到我们的应用程序,这里设置了 JSESSIONID cookie。之后,我们也使用 cy.request() 执行各种其他请求,但它们都不起作用,因为 JSESSIONID cookie 似乎没有在标头中设置。之前,我们通过在 support 文件夹的 index.js 文件中使用 Cypress.Cookies.preserveOnce('JSESSIONID') 来处理这个问题。我已经尝试过使用 cookie 的各种选项,例如在测试中移动 preserveOnce、使用白名单等,但它们都没有奏效。 我还使用 UI 自动登录,但登录后我们的会话立即过期。

有没有办法控制这个cookie?我们不明白为什么它突然停止工作(虽然最近修改了端点)。目前我们有 Cypress 4.7.0 版,我也尝试过 7.0.0 版。

有人遇到过这样的问题吗?

【问题讨论】:

    标签: cypress jsessionid


    【解决方案1】:

    您可以尝试使用 beforeEach 钩子将它放在测试文件中吗?

    例如:

    beforeEach(() => {
            Cypress.Cookies.preserveOnce('<id>')
        })
    

    【讨论】:

    • 哦,好吧。但它和我一起工作,然后你必须调试更多来识别应用程序的行为来修复它
    【解决方案2】:

    您是否尝试在规范本身中传递 cookie/s?

    在您的描述中,请添加此代码以在整个规范中保留 cookie。

    Cypress.Cookies.defaults({
        preserve: 'JSESSIONID'
    })
    

    如果需要多个cookie,它们可以放在一个数组中:

    Cypress.Cookies.defaults({
        preserve: ['JSESSIONID', 'Cookie2']
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2023-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多