讲师中心 微信公众号
AI工具推荐 视频效率加速

标题:Selenium 测试中是否应在每个测试用例后重启浏览器?最佳实践指南

老墨君_8378

老墨君_8378

发布时间:2026-01-07 15:38:33

|

278人浏览过

|

来源于php中文网

原创

标题:Selenium 测试中是否应在每个测试用例后重启浏览器?最佳实践指南

在 selenium 自动化测试中,为每个测试用例单独启动和关闭浏览器虽能保证环境隔离,但显著降低执行效率;更优策略是复用浏览器会话,并通过清理 cookies、缓存等状态确保测试独立性。

在实际测试开发中,是否在每个 @Test 方法前后重启浏览器(即调用 driver.quit() + 新建 WebDriver 实例),是一个影响稳定性、可维护性与执行速度的关键设计决策。

✅ 推荐做法:复用单个浏览器实例,配合精准状态重置
而非频繁启停。原因如下:

  • 性能优势明显:启动 Chrome/Firefox 实例通常耗时 1–3 秒,若一个测试类含 20 个用例,重复启动将额外增加 20–60 秒,严重拖慢 CI/CD 流程;
  • 资源开销更低:避免反复创建/销毁进程与内存对象,减少系统负载;
  • 可控性更强:通过 driver.manage().deleteAllCookies()、driver.navigate().refresh() 或 driver.get("about:blank") 等方式,可精确清除登录态、本地存储(localStorage/sessionStorage)等干扰项,比“杀进程”更轻量、更可靠。

? 关键操作示例(Java + Selenium):

java-api-doc-generator
java-api-doc-generator

分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。

下载
@BeforeMethod
public void setUp() {
    if (driver == null) {
        driver = new ChromeDriver(); // 首次初始化
        driver.manage().window().maximize();
    } else {
        // 复用 driver,仅重置状态
        driver.manage().deleteAllCookies(); // 清除所有 cookies
        driver.navigate().to("about:blank"); // 重置页面上下文
        driver.executeScript("window.sessionStorage.clear();");
        driver.executeScript("window.localStorage.clear();");
    }
}

@AfterMethod
public void tearDown() {
    // 不关闭 driver,仅确保页面回到干净起点
    // driver.quit(); // ❌ 不在此处调用
}

⚠️ 何时才需真正重启浏览器?
仅在以下场景建议强制重启:

  • 测试涉及全局浏览器配置变更(如代理、证书、扩展安装);
  • 某个用例导致 WebDriver 状态异常(如 UnreachableBrowserException)且无法恢复;
  • 跨域/多账号并行登录验证(如需同时保持 admin 和 user 两个独立会话)——此时应使用不同 WebDriver 实例,而非共享。

? 补充建议:

  • 使用 TestNG 的 @BeforeClass / @AfterClass 管理浏览器生命周期(启动于类前,退出于类后);
  • 对于高度敏感的登录/支付类测试,可在关键用例前后插入 driver.navigate().to("https://example.com/logout") + 显式等待登出完成,再清理 cookies;
  • 始终结合显式等待(WebDriverWait)替代 Thread.sleep(),提升稳定性和响应速度。

总之,“复用 + 清理”优于“重建 + 重启” —— 这是在可靠性、效率与可维护性之间达成平衡的 Selenium 测试工程化核心实践。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2866

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5779

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4107

2026.03.24

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

563

2025.12.01

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5510

2024.08.16

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

506

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

345

2026.05.13

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

4970

2023.10.13

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn