在 selenium 自动化测试中,为每个测试用例单独启动并关闭浏览器虽能保证环境隔离,但显著降低执行效率;更优实践是复用浏览器会话,并在测试间主动清理状态(如 cookies、缓存、本地存储),以兼顾稳定性与性能。
在实际工程实践中,不建议
为每个 @Test 方法都调用 driver.quit() 再重新初始化 WebDriver。以您提供的 LoginTest.java 为例:
@Test(description = "send invalid username")
void loginWithIncorrectUsername() { /* ... */ }
@Test(description = "send invalid password")
void loginWithIncorrectPassword() { /* ... */ }
@Test(description = "send valid credentials")
void loginWithCorrectCredentials() { /* ... */ }若每个方法都独立启停浏览器,三次测试将产生至少三次浏览器进程启动/销毁开销(尤其在 Chrome 或 Edge 中可能耗时 2–5 秒/次),严重拖慢整体执行速度,且增加资源竞争与不稳定风险(如端口占用、驱动残留)。
✅ 推荐方案:单浏览器实例 + 状态重置
private WebDriver driver;
@BeforeClass
public void setUp() {
driver = new ChromeDriver(); // 或通过 WebDriverManager 自动管理
driver.manage().window().maximize();
}
@AfterMethod
public void tearDownEachTest() {
// 清理会话状态,而非关闭浏览器
driver.manage().deleteAllCookies(); // 删除所有 cookies
driver.executeScript("window.localStorage.clear();");
driver.executeScript("window.sessionStorage.clear();");
driver.navigate().to("about:blank"); // 重置页面上下文
}⚠️ 注意事项:
? 总结:
高效可靠的 Selenium 测试 = 一次启动 + 每次清理 + 显式断言。优先复用浏览器会话,通过标准化的清理逻辑保障测试独立性,而非依赖昂贵的进程重启——这既是性能最佳实践,也是可维护自动化套件的核心设计原则。