如何阻止Cypress在每个测试用例(it)执行后关闭浏览器?
解决Cypress每个测试用例后关闭浏览器的问题
Cypress默认会为每个it测试用例创建独立的浏览器上下文(执行后重置/关闭),以此保证测试的隔离性。要让多个测试用例共享同一个浏览器会话,有两种常见方案:
方案1:关闭测试隔离配置
在Cypress配置文件(cypress.config.js/cypress.config.ts)中设置testIsolation为false,所有测试用例就会共用同一个浏览器上下文,不会在it执行后关闭浏览器:
module.exports = { e2e: { testIsolation: false, // 其他配置项... }, };
修改后你的原有测试代码结构可以保留,第一个用例打开Google后,第二个用例能直接在当前页面继续操作。
方案2:合并测试步骤到同一个it块
如果不需要拆分独立的测试用例报告,也可以把打开页面和搜索的逻辑合并到一个it块中,自然不会出现浏览器关闭的问题:
/// <reference types="cypress" /> context("Dummy test cases", () => { it("open Google and search keyword", () => { cy.visit("www.google.com"); cy.get(".gLFyf").type("cypress{enter}"); }); });
额外说明
- 关闭
testIsolation后,测试用例会共享状态,前一个用例的操作会影响后续用例,需要确保测试逻辑的顺序合理性。 - 如果只是需要在每个测试用例前重复执行前置操作(比如打开页面),可以使用
beforeEach钩子,但此时每个it仍会重置上下文,只是自动重复执行前置步骤:
context("Dummy test cases", () => { beforeEach(() => { cy.visit("www.google.com"); }); it("search a keyword", () => { cy.get(".gLFyf").type("cypress{enter}"); }); });
内容的提问来源于stack exchange,提问作者Yogendiran Barath
相关产品推荐
相关产品推荐

