Chrome升级至120后Selenium测试报错:无法访问HasDownloads类
问题分析与解决方案
核心问题定位
报错java: cannot access org.openqa.selenium.HasDownloads class file for org.openqa.selenium.HasDownloads not found的根源是依赖版本不兼容:你用的selenium-http-jdk-client:4.13.0版本远低于selenium-java:4.16.1,而HasDownloads类是Selenium 4.14+才新增的,低版本客户端依赖找不到这个类。另外,Chrome 120对应DevTools版本是v120,强行用v119的API也会引发兼容性问题。
分步解决办法
1. 统一所有Selenium依赖版本
确保selenium-java、selenium-http-jdk-client和DevTools相关依赖版本完全一致,推荐用和Chrome 120兼容的最新稳定版4.16.1。修改pom.xml如下:
<dependencies> <!-- Selenium核心依赖 --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.16.1</version> </dependency> <!-- HTTP客户端依赖,版本必须和selenium-java一致 --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-http-jdk-client</artifactId> <version>4.16.1</version> </dependency> <!-- DevTools依赖,匹配Chrome 120版本 --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-devtools-v120</artifactId> <version>4.16.1</version> </dependency> </dependencies>
2. 更新DevTools API导入版本
把所有DevTools相关的导入从v119改成v120,和Chrome版本匹配:
import org.openqa.selenium.devtools.v120.network.Network; import org.openqa.selenium.devtools.v120.network.model.RequestId;
3. 简化DevTools会话初始化(可选优化)
Selenium 4.11+版本后,不需要手动调用createSession(),框架会自动为ChromeDriver创建会话,直接用就行:
DevTools devTools = ((ChromeDriver) driver).getDevTools(); // 直接调用API,比如开启网络监控 devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
4. 清理重建项目
- 执行
mvn clean install清理旧依赖缓存,重新下载统一版本的依赖 - 重启IDE,确保加载最新的依赖文件
验证步骤
- 确认Chrome浏览器版本为120.x
- 运行测试用例,检查DevTools代码是否正常执行
- 确认
HasDownloads相关编译错误消失
内容的提问来源于stack exchange,提问作者Zoran
相关产品推荐
相关产品推荐

