Cypress - cookie

Cypress 使用Cookies.preserveOnce()Cookies.defaults()方法处理 cookie 。如果 cookie 发生任何更改,Cookies.debug()方法会向控制台生成日志。

默认情况下,Cypress 在每次测试执行之前都会删除所有 cookie。我们可以利用Cypress.Cookies.preserveOnce()保留 cookie 及其名称,以用于其他测试。

句法

Cypress 中与 cookie 相关的命令的语法如下 -

如果配置或清除了 cookie 值,这将生成控制台日志。

Cypress.Cookies.debug(enable, option)

这里,

  • 启用 – 是否应启用 cookie 调试。

  • option – 配置cookie的默认值,例如保留cookie。

Cypress.Cookies.debug(true) // logs will generate if cookies are modified
cy.clearCookie('cookie1')
cy.setCookie('cookie2', 'val')

降低日志记录级别。

Cypress.Cookies.debug(true, { verbose: false })
Cypress.Cookies.debug(false) // logs will not generate if cookies are modified

下面给出的语法将保留 cookie,并且在执行另一个测试之前它们不会被清除。

Cypress.Cookies.preserveOnce(cookie names...)

此语法用于修改全局配置并维护一组为测试而保留的 cookie。任何修改都将适用于该特定测试。(维护在 cypress/support/index.js 文件中,并在测试执行之前加载)。

Cypress.Cookies.defaults(option)
Cypress.Cookies.defaults({
   preserve: 'cookie1'
})

这里,名为 cookie1 的 cookie 在运行测试之前不会被清除。

Cookie 方法

Cypress 中的一些 cookie 方法如下 -

  • cy.clearCookies() - 它从当前域和子域中删除所有cookie。

  • cy.clearCookie(name) - 它按名称从浏览器中删除 cookie。

  • cy.getCookie(name) - 用于按名称从浏览器获取 cookie。

  • cy.getCookies() - 用于获取所有cookie。

  • cy.setCookie(name) - 它可以配置 cookie。

执行

下面给出的是 Cypress 中 cookie 方法的实现 -

describe('Tutorialspoint Test', function () {
   // test case
   it('Scenario 1', function (){
      // launch the application
      cy.visit("https://accounts.google.com");
      // enable cookie logging
      Cypress.Cookies.debug(true)
      //set cookie
      cy.setCookie('cookie1', 'value1')
      //get cookie by name and verify value
      cy.getCookie('cookie1').should('have.property', 'value', 'value1')
      //clear cookie by name
      cy.clearCookie('cookie')
      //get all cookies
      cy.getCookies()
      //clear all cookies
      cy.clearCookies()
      //verify no cookies
      cy.getCookies().should('be.empty')
   });
});

执行结果

输出如下 -

Cookie 方法