Selenium通过Maven运行测试时浏览器启动后立即关闭如何修复
问题根因
你的pom.xml存在严重的依赖版本冲突和配置冗余问题,不同版本的Selenium、WebDriverManager组件混用,导致本地运行时WebDriver生命周期管理异常,浏览器启动后直接被销毁,且老旧的测试插件会屏蔽错误日志输出。
修复步骤
- 清理重复、冲突的依赖
- 删除重复声明的
io.github.bonigarcia:webdrivermanager依赖,仅保留3.2.0高版本即可,删除2.2.1版本的声明 - 删除老旧的
org.seleniumhq.selenium:selenium:2.0rc2依赖,你已经引入了3.14.0版本的selenium-java,这个2.0rc2的旧版本会导致核心API冲突 - 删除多余的
org.seleniumhq.selenium:selenium-chrome-driver依赖,selenium-java已经包含了各浏览器驱动的核心依赖,单独声明容易出现版本不匹配
- 删除重复声明的
- 修正构建插件配置
- 删除重复声明的
maven-jar-plugin配置,当前build配置里重复写了两次该插件,保留任意一个即可 - 升级maven-surefire-plugin版本到2.22.2以上,你当前使用的2.7.1版本过于老旧,和JDK8、新版测试框架兼容性差,容易出现测试执行日志丢失、进程提前终止的问题,修改后配置参考:
- 删除重复声明的
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <systemPropertyVariables> <environment>${env}</environment> <browser>${browser}</browser> </systemPropertyVariables> <forkCount>1</forkCount> <reuseForks>false</reuseForks> <trimStackTrace>false</trimStackTrace> </configuration> </plugin>
- 清理本地缓存重新构建
执行以下命令清空本地缓存的冲突依赖,重新构建项目:
mvn clean install -U
额外排查建议
如果修复依赖后问题仍存在,可在WebDriver初始化代码后添加Thread.sleep(10000)临时调试,确认是浏览器启动后直接崩溃还是测试代码执行完毕自动销毁,如果是自动销毁可检查你是否在测试用例的@After hook中提前执行了driver.quit()逻辑。
内容的提问来源于stack exchange,提问作者Zaid
相关产品推荐
相关产品推荐

