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

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