Skip to main content
Cypress应用

setCookie

设置浏览器cookie。

语法

cy.setCookie(name, value)
cy.setCookie(name, value, options)

用法

正确用法

cy.setCookie('auth_key', '123key') // 将'auth_key' cookie设置为'123key'

参数

name (String)

要设置的cookie名称。

value (String)

要设置的cookie值。

options (Object)

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

选项默认值描述
logtrue命令日志中显示该命令
domain当前URL的主机名cookie可见的域名
expiry当前时间往后20年cookie过期时间,以Unix时间戳秒数表示。
hostOnlyfalse是否为仅限主机的cookie(即请求的主机必须完全匹配cookie的域名)
httpOnlyfalse是否为HTTP only cookie
path/cookie路径
securefalse是否为安全cookie
timeoutresponseTimeout等待cy.setCookie()解析的超时时间
sameSiteundefinedcookie的SameSite值。如果设置,应为laxstrictno_restriction之一。传递undefined使用浏览器默认值。注意:no_restriction仅在secure标志设为true时可用。

生成结果 了解主题管理

cy.setCookie()返回一个包含以下属性的cookie对象:

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

示例

名称和值

设置一个cookie

cy.getCookies().should('be.empty')
cy.setCookie('session_id', '189jd09sufh33aaiidhf99d09')
cy.getCookie('session_id').should(
'have.property',
'value',
'189jd09sufh33aaiidhf99d09'
)

规则

要求 了解命令链

  • cy.setCookie()必须链接在cy之后使用。

断言 了解断言

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

超时设置 了解超时机制

  • cy.setCookie()不应该出现超时。
caution

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

命令日志

为测试在浏览器上设置cookie

cy.getCookies().should('be.empty')
cy.setCookie('fakeCookie1', '123ABC')
cy.getCookie('fakeCookie1').should('have.property', 'value', '123ABC')

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

命令日志 setcookie

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

控制台日志 setcookie

历史版本

版本变更
12.7.0支持为指定域名设置hostOnly选项。
5.0.0移除experimentalGetCookiesSameSite并使sameSite属性始终可用。
4.3.0experimentalGetCookiesSameSite配置值为true时添加sameSite属性。
0.16.0添加cy.setCookie()命令

另请参阅