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

Selenium测试中浏览器实例的复用策略:何时重启,何时保持会话

小雪同学_1725

小雪同学_1725

发布时间:2026-01-07 10:46:02

|

520人浏览过

|

来源于php中文网

原创

Selenium测试中浏览器实例的复用策略:何时重启,何时保持会话

在selenium自动化测试中,为每个测试用例单独启动和关闭浏览器虽能保证隔离性,但显著降低执行效率;更优实践是复用单个浏览器会话,并通过清理cookies、本地存储等方式重置状态,兼顾稳定性与性能。

在实际工程实践中,不建议为每个@Test方法都调用driver.quit()再重新初始化浏览器。以您提供的LoginTest.java为例,三个测试用例(错误用户名、错误密码、正确凭据)逻辑上属于同一功能模块,若强制每次重启浏览器:

HR面试评价助手-Word版
HR面试评价助手-Word版

🎯 HR面试评价助手(Word版格式) 生成可直接复制到Word文档的标准格式HR面试评价 【使用方式】 1. 发送口令:HR面试评价 2. 粘贴JD文字 3. 上传简历文档 4. 上传面试记录(可选) 5. 复制生成的评价到Word 【输出特点】 - 纯文本格式,可直接粘贴到Word - 层次清晰,标题加粗...

下载
  • ✅ 优势:完全避免状态污染(如残留登录态、缓存、localStorage);
  • ❌ 缺陷:启动浏览器耗时通常占单测总时长的60%以上(尤其ChromeDriver + GUI模式),导致整体执行时间倍增,CI/CD反馈延迟,不利于快速迭代。

推荐方案:单浏览器实例 + 精准状态清理
在测试类生命周期内复用同一个WebDriver实例(如通过@BeforeClass初始化,@AfterClass关闭),并在每个测试方法执行前后主动清除会话状态:

public class LoginTest {
    private static WebDriver driver;

    @BeforeClass
    public static void setUp() {
        driver = new ChromeDriver(); // 或通过WebDriverManager管理
        driver.manage().window().maximize();
    }

    @AfterClass
    public static void tearDown() {
        if (driver != null) driver.quit();
    }

    @BeforeMethod
    public void beforeEachTest() {
        // 关键:重置浏览器状态,而非重启
        driver.navigate().to("https://example.com/login");
        driver.manage().deleteAllCookies(); // 清除所有Cookies
        driver.executeScript("window.localStorage.clear();"); // 清空localStorage
        driver.executeScript("window.sessionStorage.clear();"); // 清空sessionStorage
    }

    @Test(description = "send invalid username")
    void loginWithIncorrectUsername() {
        // 执行具体断言...
    }

    @Test(description = "send invalid password")
    void loginWithIncorrectPassword() {
        // 执行具体断言...
    }

    @Test(description = "send valid credentials")
    void loginWithCorrectCredentials() {
        // 执行具体断言...
    }
}

⚠️ 注意事项:

  • 若被测应用依赖服务端会话(如JWT Token存储在HTTP-only Cookie),仅客户端清理可能不足,需配合后端API调用登出接口;
  • 某些场景(如测试多用户并发登录、浏览器指纹检测)仍需真正隔离环境,此时可考虑使用无头模式+临时用户数据目录(Chrome的--user-data-dir=/tmp/chrome-test-uuid)实现轻量级隔离;
  • 使用TestNG/JUnit5时,确保@BeforeMethod在@Test前可靠执行——避免因异常跳过清理逻辑,建议在@AfterMethod中补充兜底清理。

✅ 总结:
“一次启动、多次复用、按需清理”是平衡可靠性与执行效率的黄金准则。它既规避了频繁启停的性能瓶颈,又通过可控的状态重置保障了测试独立性。将精力聚焦于精准的状态管理,而非机械地重启浏览器,才是专业Selenium测试工程化的体现。

热门AI工具

更多
WorkBuddy

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

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

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

DeepSeek

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

音述AI
音述AI Hot

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

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

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

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

2686

2023.08.11

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

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

5159

2023.11.06

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

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

3707

2026.03.24

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

11719

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1086

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

804

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1886

2025.08.19

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

13486

2023.09.14

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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