Cypress 简明教程
Cypress - Cookies
Cypress 使用方法 Cookies.preserveOnce() 和 Cookies.defaults() 处理 Cookies。如果 Cookies 有任何更改,方法 Cookies.debug() 会在控制台生成日志。
默认情况下,Cypress 会在每次测试执行前删除所有 Cookie。我们可以利用 Cypress.Cookies.preserveOnce() 来保留 Cookies 及其名称,以便在其他测试中使用。
Syntax
在 Cypress 中用于与 Cookie 相关的命令的语法如下所示:
这将在配置或清除 Cookie 值时生成控制台日志。
Cypress.Cookies.debug(enable, option)
在此,
-
enable – 如果应该启用 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
下面给出的语法将保留 Cookies,并且在执行其他测试之前不会清除它们。
Cypress.Cookies.preserveOnce(cookie names...)
此语法用于修改全局配置并维护为测试保留的一组 Cookie。任何修改都将适用于该特定测试(保留在 cypress/support/index.js 文件中并在测试执行前加载)。
Cypress.Cookies.defaults(option)
Cypress.Cookies.defaults({
preserve: 'cookie1'
})
此处,不会在运行测试前清除名为 cookie1 的 Cookie。
Cookie Methods
Cypress 中的一些 Cookie 方法如下:
-
cy.clearCookies() - 从当前域和子域删除所有 Cookie。
-
cy.clearCookie(name) - 通过名称从浏览器中删除 Cookie。
-
cy.getCookie(name) - 用于通过名称从浏览器中获取 Cookie。
-
cy.getCookies() - 用于获取所有 Cookie。
-
cy.setCookie(name) - 可以配置 Cookie。
Implementation
下面给出了在 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')
});
});
Execution Results
输出如下: