Skip to main content
Cypress应用

getCookies

获取当前域名或指定域名的浏览器 Cookie。

语法

cy.getCookies()
cy.getCookies(options)

用法

正确用法

cy.getCookies() // 获取当前域名的 Cookie

参数

options (Object)

传入一个选项对象来改变 cy.getCookies() 的默认行为。

选项默认值描述
domain当前 URL 的主机名从指定域名获取 Cookie
logtrue命令日志中显示该命令
timeoutresponseTimeout等待 cy.getCookies() 解析的超时时间,超过则超时

生成结果 了解主题管理

cy.getCookies() 返回一个包含 Cookie 对象的数组。每个 Cookie 对象具有以下属性:

  • domain: (String)
  • expiry: (Number) (如果指定)
  • hostOnly: (Boolean) (如果指定)
  • httpOnly: (Boolean)
  • name: (String)
  • path: (String)
  • sameSite: (String) (如果指定)
  • secure: (Boolean)
  • value: (String)

cy.getCookies() 不是查询操作。如果在初始执行后添加了更多 Cookie,它不会更新返回的列表。

示例

在此示例中,首次登录时服务器会返回一个会话 Cookie。

// 假设我们刚刚登录
cy.contains('Login').click()
cy.url().should('include', 'profile')
cy.getCookies()
.should('have.length', 1)
.then((cookies) => {
expect(cookies[0]).to.have.property('name', 'session_id')
})

规则

要求 了解命令链

  • cy.getCookies() 需要链式调用 cy

断言 了解断言

  • cy.getCookies() 只会运行一次链式断言,不会重试

超时设置 了解超时机制

  • cy.getCookies() 不应该超时。
caution

由于 cy.getCookies() 是异步操作,理论上在与 Cypress 内部自动化 API 通信时可能会超时。但实际上几乎不会发生。

命令日志

获取浏览器 Cookie 并检查所有属性

cy.getCookies()
.should('have.length', 1)
.then((cookies) => {
expect(cookies[0]).to.have.property('name', 'fakeCookie1')
expect(cookies[0]).to.have.property('value', '123ABC')
expect(cookies[0]).to.have.property('domain')
expect(cookies[0]).to.have.property('httpOnly')
expect(cookies[0]).to.have.property('path')
expect(cookies[0]).to.have.property('secure')
})

以上命令将在命令日志中显示为:

命令日志 getcookies

当点击命令日志中的 getCookies 时,控制台会输出以下内容:

控制台日志 getcookies

历史版本

版本变更
5.0.0移除了 experimentalGetCookiesSameSite 并使 sameSite 属性始终可用。
4.3.0当配置项 experimentalGetCookiesSameSitetrue 时,添加了 sameSite 属性。

另请参阅