Cypress - Cookies

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

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

语法

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

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

Cypress.Cookies.debug(enable, option)

这里,

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

  • option – 配置 cookie 的默认值,例如,preserve cookies。

Cypress.Cookies.debug(true) // 如果 cookies 被修改,将生成日志
cy.clearCookie('cookie1')
cy.setCookie('cookie2', 'val')

降低日志级别。

Cypress.Cookies.debug(true, { verbose: false })
Cypress.Cookies.debug(false) // 如果 cookies 被修改,将不会生成日志

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

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

此语法用于修改全局配置并维护为测试保留的一组 cookies。任何修改都将适用于该特定测试。(在 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 () {
    // 测试用例
    it('Scenario 1', function (){
        // 启动应用程序
        cy.visit("https://accounts.google.com");
        // 启用 cookie 日志记录
        Cypress.Cookies.debug(true)
        //设置 cookie
        cy.setCookie('cookie1', 'value1')
        //通过名称获取 cookie 并验证值
        cy.getCookie('cookie1').should('have.property', 'value', 'value1')
        //通过名称清除 cookie
        cy.clearCookie('cookie')
        //获取所有 cookie
        cy.getCookies()
        //清除所有 cookie
        cy.clearCookies()
        //验证没有 cookies
        cy.getCookies().should('be.empty')
    });
});

执行结果

输出如下 −

Cookie Methods