clearCookie
清除特定的浏览器cookie。
caution
Cypress会在每次测试_前_自动清除所有cookie,以防止在启用测试隔离时测试间共享状态。除非你需要在单个测试中清除特定cookie或测试隔离被禁用,否则不应使用此命令。
语法
cy.clearCookie(name)
cy.clearCookie(name, options)
用法
正确用法
cy.clearCookie('authId') // 清除名为'authId'的cookie
参数
name (String)
要清除的cookie名称。
options (Object)
传入一个选项对象来改变cy.clearCookie()
的默认行为。
选项 | 默认值 | 描述 |
---|---|---|
domain | 当前URL的主机名 | 从指定域名清除cookie |
log | true | 在命令日志中显示该命令 |
timeout | responseTimeout | 等待cy.clearCookie() 解析的时长,超过则超时 |
生成结果
cy.clearCookie()
返回null
。
示例
无参数
登录后清除cookie 仅限端到端测试
在此示例中,首次登录时服务器会返回一个会话cookie。调用cy.clearCookie('session_id')
后,会清除该会话cookie。然后导航到未授权页面时,我们断言服务器已将我们重定向回登录页。
// 假设我们刚刚登录
cy.contains('登录').click()
cy.url().should('include', 'profile')
cy.clearCookie('session_id')
cy.visit('/dashboard') // 我们应该被重定向回登录页
cy.url().should('include', 'login')
规则
要求
cy.clearCookie()
必须链在cy
之后调用。
断言
cy.clearCookie()
不能链任何断言。
超时设置
cy.clearCookie()
不应超时。
caution
由于cy.clearCookie()
是异步的,理论上在与Cypress内部自动化API通信时可能会超时。但实际上这种情况几乎不会发生。
命令日志
设置cookie后清除cookie
cy.setCookie('foo', 'bar')
cy.clearCookie('foo')
cy.getCookie('foo').should('be.null')
以上命令将在命令日志中显示为:

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