为何Chrome测试启动缓慢?Selenium+Java 4.20.0的Maven项目问题
解决Selenium 4.20.0中Chrome启动缓慢及SeleniumManager警告问题
问题分析
控制台的警告说明Selenium自动管理ChromeDriver时出现响应体解码失败,只能使用缓存中的旧驱动。驱动与Chrome版本不匹配或缓存驱动损坏,是Chrome启动缓慢的核心原因;Edge正常则是因为其驱动管理未出现类似异常。
解决方案
手动指定匹配的ChromeDriver版本
- 查看本地Chrome版本:打开Chrome→菜单→帮助→关于Google Chrome,记录版本号(如
124.0.6367.60)。 - 方式一:手动下载对应版本的ChromeDriver放到项目目录,代码中指定路径:
System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); WebDriver driver = new ChromeDriver(); - 方式二:通过WebDriverManager精确控制版本,先在
pom.xml添加依赖:
再在代码中设置版本:<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.3</version> </dependency>WebDriverManager.chromedriver().driverVersion("124.0.6367.60").setup(); WebDriver driver = new ChromeDriver();
- 查看本地Chrome版本:打开Chrome→菜单→帮助→关于Google Chrome,记录版本号(如
禁用SeleniumManager自动管理
通过系统属性强制禁用自动管理,避免网络请求或解码错误,直接使用指定驱动:System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe"); System.setProperty("selenium-manager.disable", "true"); WebDriver driver = new ChromeDriver();优化Chrome启动参数
添加启动参数减少不必要的加载项,加速启动:ChromeOptions options = new ChromeOptions(); options.addArguments("--start-maximized"); options.addArguments("--disable-extensions"); options.addArguments("--disable-plugins"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); // 无需可视化时可添加无头模式,启动更快 // options.addArguments("--headless=new"); WebDriver driver = new ChromeDriver(options);清理ChromeDriver缓存
删除SeleniumManager缓存的旧驱动,让其重新下载匹配版本:- Windows:删除
%USERPROFILE%\.cache\selenium\chromedriver下的文件 - Linux/macOS:删除
~/.cache/selenium/chromedriver下的文件
- Windows:删除
内容的提问来源于stack exchange,提问作者Yaswanth Katamraj
相关产品推荐
相关产品推荐

