Skip to main content
Cypress应用

Cypress.session

Cypress.session 是一组异步会话相关的辅助方法, 旨在与 cy.session() 命令配合使用。

语法

// 清除后端保存的所有会话,包括缓存的全局会话。
Cypress.session.clearAllSavedSessions()
// 清除当前会话关联的所有源的存储和cookie数据。
Cypress.session.clearCurrentSessionData()
// 获取当前会话关联的所有源的存储和cookie数据。
Cypress.session.getCurrentSessionData()
// 获取后端保存的与指定会话ID关联的所有存储和cookie数据。
Cypress.session.getSession(id)

清除所有会话并自动重新运行测试 Cypress.session.clearAllSavedSessions() 也可以通过点击 会话仪表盘中的 "Clear All Sessions" 按钮完成。

会话仪表盘

参数

id (String)

用于检索存储和cookie数据的会话名称。

示例

清除所有会话数据

默认情况下,当启用 testIsolation 时,Cypress 会在每个测试前清除当前会话数据。 你也可以使用 Cypress.session.clearAllSavedSessions() 移除所有缓存的会话数据。

Cypress.session.clearAllSavedSessions()

当 testIsolation 禁用时清除当前会话数据

默认情况下,当启用 testIsolation 时,Cypress 会在每个测试前清除当前会话数据。 如果你为测试套件禁用了 testIsolation,可以在 before() 块中清除当前会话数据, 以确保套件从一个干净的测试状态开始。

describe('Dashboard', { testIsolation: false }, () => {
before(() => {
// 确保这些测试从一个干净的状态开始
cy.then(Cypress.session.clearCurrentSessionData)
})
})

验证应用的会话数据

要检查 cy.session() 完成后应用的所有 cookies、localStorage 和 sessionStorage, 可以使用 Cypress.session.getCurrentSessionData()。 这在编写 cy.session() 命令时快速分析当前浏览器上下文非常有用。

由于这是 cy.getAllCookies()cy.getAllLocalStorage()cy.getAllSessionStorage() 命令的一体化辅助方法,我们通常建议在会话验证块中使用这些命令来断言正确的会话数据是否已应用。

it('debug session', () => {
cy.session('id', () => {
...
})
.then(async () => {
const sessionData = await Cypress.session.getCurrentSessionData()
cy.debug()
})
})

调试缓存的会话数据

如果你的会话似乎比预期更频繁地重建,或者没有应用你预期的 cookies、localStoragesessionStorage 数据, 可以使用 Cypress.session.getSession(id) 查看 cy.session() 缓存了哪些会话数据。 如果缺少任何数据,你的设置和/或验证函数可能没有等待足够长的时间让所有属性在 cy.session() 命令保存并完成之前应用到页面。

it('debug session', () => {
cy.session('id', () => {
...
})
.then(async () => {
const sessionData = await Cypress.session.getSession('id')
cy.debug()
})
})

另请参阅