javascript Cypress -如何使用Cypress版本10获取Cookie

gajydyqb  于 2023-05-05  发布在  Java
关注(0)|答案(2)|浏览(166)

我使用的是Cypress版本10.7.0,但我使用的是以前版本的getCookie
下面是我在command.js中的代码

afterEach(() => {
    let str = [];
    cy.getCookies().then((cook) => {
        cy.log(cook);
        for (let l = 0; l < cook.length; l++) {
            str[l] = cook[l].name;
            Cypress.Cookies.preserveOnce(str[l]); 
        }
    })
})

它运行良好,但有时失败,并显示错误的图像

tf7tbtn2

tf7tbtn21#

这里有一个自定义命令cypress-v10-preserve-cookie,它可能工作得更好。
唯一不同的是你必须知道饼干的名字,但你应该已经知道了。

Cypress.Commands.add('preserveCookieOnce', (...names) => {
  if (!names.length) {
    throw new Error('Expected at least one cookie name')
  }

  names.forEach((name) => {
    if (typeof name !== 'string' || !name) {
      throw new Error('Expected the cookie name to preserve')
    }
    cy.log(`preserveCookieOnce **${name}**`)
    const saveName = 'cookie_' + name
    cy.getCookie(name, { log: false })
      // disable the built-in existence check
      .should(Cypress._.noop)
      .then((c) => {
        if (!c) {

          cy.log('there is no cookie named %s', name)

          const previouslySaved = Cypress.env(saveName)
          if (previouslySaved) {
            debug(
              'setting the previously saved cookie %s %o',
              name,
              previouslySaved,
            )
            cy.setCookie(name, previouslySaved.value, { log: false })
          }
        } else {
          Cypress.env(saveName, c)
        }
      })
  })
})

我把debug()改成了cy.log()来显示cookie值是否消失了,看起来你偶尔会遇到这个问题。

cbwuti44

cbwuti442#

现在我的Cypress版本是12.7.0
我尝试***testIsolation:false***in cypress.config.js

module.exports = defineConfig({
  e2e: {
    watchForFileChanges: false,
    defaultCommandTimeout: 5000,
    testIsolation: false,
    baseUrl: '',
    setupNodeEvents(on, config) {
    },
  }
});

我在***之前清除了***cookie***和***中的alllocalstorage
是工作

相关问题