You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium 4执行测试时遇java.lang.NoSuchMethodError问题求助

Selenium 4.6.0升级后NoSuchMethodError问题求助

升级Selenium版本从3.141.59到4.6.0后,执行测试用例时触发以下错误:

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap;

经排查,问题根源是:底层依赖库调用ImmutableMap.of()时传入了12个参数,但当前依赖的Guava版本中该方法仅支持最多10个参数(测试代码未直接调用此方法)。

已尝试以下方案但均未解决:

  • 将Guava版本从23.0升级至31.0.1-jre
  • 将Guava版本从23.0升级至31.1-jre
  • 添加io.github.bonigarcia依赖,版本5.0.3
  • 添加io.github.bonigarcia依赖,版本5.1.0
  • 尝试删除本地Maven仓库(.m2)中com/google/common/collect/ImmutableMap相关文件,但未找到对应路径

当前环境信息

  • Chrome版本:109.0.5414.120
  • Java版本:1.8.0_341
  • 限制:因维护公司测试框架,无法降级Selenium版本

可能的解决办法

  1. 强制排除Selenium自带的旧Guava并显式引入高版本
    在Maven或Gradle配置中,先排除Selenium依赖自带的Guava,再明确引入支持12参数of()方法的高版本Guava(如31.1-jre):
    Maven配置示例:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.6.0</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.1-jre</version>
    </dependency>
    

    Gradle配置示例:

    implementation('org.seleniumhq.selenium:selenium-java:4.6.0') {
        exclude group: 'com.google.guava', module: 'guava'
    }
    implementation 'com.google.guava:guava:31.1-jre'
    
  2. 排查并解决依赖冲突
    执行依赖树命令查看所有引入的Guava版本:

    • Maven:mvn dependency:tree
    • Gradle:./gradlew dependencies
      找到引入低版本Guava的依赖,针对性排除该依赖中的Guava。
  3. 彻底清理依赖缓存并重新构建
    执行清理命令后重新构建项目,确保旧依赖被完全替换:

    • Maven:mvn clean install -U
    • Gradle:./gradlew clean build --refresh-dependencies
  4. 确认Selenium与Guava版本兼容性
    参考Selenium 4.6.0官方文档,确认推荐搭配的Guava版本,避免版本不兼容问题。

内容的提问来源于stack exchange,提问作者TTDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:35:24