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

如何解决Selenium中ImmutableMap.of方法缺失的NoSuchMethodError?

问题解决:Selenium报错NoSuchMethodError(Guava版本冲突)

一、报错根本原因

你遇到的java.lang.NoSuchMethodError和坐标点击代码无关,本质是Guava版本不兼容:

  • Selenium内部依赖Guava库,你的项目中引入的Guava版本与Selenium所需版本不一致,导致找不到ImmutableMap.of的对应重载方法。

二、解决步骤

1. 匹配Selenium与Guava版本

不同Selenium版本对应特定的Guava版本,参考对应关系(举例):

  • Selenium 3.x:推荐Guava 28.0-jre及以下
  • Selenium 4.x:推荐Guava 30.1-jre及以上

2. 修复依赖冲突

Maven项目

  • 方法一:通过dependencyManagement强制指定Guava版本,覆盖所有依赖的版本:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.1-jre</version> <!-- 替换为你的Selenium对应的版本 -->
        </dependency>
    </dependencies>
</dependencyManagement>
  • 方法二:排查并排除其他依赖引入的旧版Guava:
    执行mvn dependency:tree查看依赖树,找到引入旧Guava的依赖,在其依赖配置中添加排除:
<dependency>
    <groupId>[冲突依赖的groupId]</groupId>
    <artifactId>[冲突依赖的artifactId]</artifactId>
    <version>[版本号]</version>
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Gradle项目

在build.gradle中强制指定Guava版本:

configurations.all {
    resolutionStrategy.force 'com.google.guava:guava:30.1-jre' // 替换为对应版本
}

三、修正坐标点击代码(额外优化)

你原来的坐标点击逻辑存在错误:moveToElement(internTab)已将鼠标移到元素上,再调用moveByOffset(x,y)会让鼠标移动到元素位置+元素绝对坐标的位置,大概率偏离目标元素。直接简化点击逻辑即可:

// 方式1:直接点击元素
internTab.click();

// 方式2:用Actions点击(适合需要悬停的场景)
Actions actions = new Actions(driver);
actions.moveToElement(internTab).click().perform();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:53:16