You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

启动ChromeDriver时遭遇java.lang.NoSuchMethodError问题求助

解决ChromeDriver启动时的java.lang.NoSuchMethodError错误

嘿,我帮你分析下这个java.lang.NoSuchMethodError的问题,这在Selenium+ChromeDriver的场景里大多是版本不兼容或者依赖冲突搞的鬼,给你几个实用的解决方向:

  • 先排查版本兼容性问题
    这个错误最常见的原因就是Selenium版本和ChromeDriver、Chrome浏览器版本不匹配。你先做这几步:

    1. 打开Chrome浏览器的「设置」→「关于Chrome」,查看你的浏览器版本
    2. 确保下载的ChromeDriver版本和浏览器版本完全对应(比如Chrome是118.x,就用118.x的ChromeDriver)
    3. 同时Selenium版本也要适配,比如Chrome 114+版本建议搭配Selenium 4.10.0及以上版本
  • 检查项目依赖冲突
    如果你的项目用了Maven或Gradle,很可能是依赖传递引入了不同版本的Selenium组件,导致方法找不到。

    • 用Maven的mvn dependency:tree命令,或者Gradle的./gradlew dependencies命令生成依赖树,找出重复或版本不一致的Selenium依赖
    • 把旧版本的依赖排除掉,比如Maven中可以这么写:
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>4.11.0</version>
          <exclusions>
              <exclusion>
                  <groupId>org.seleniumhq.selenium</groupId>
                  <artifactId>selenium-api</artifactId>
              </exclusion>
          </exclusions>
      </dependency>
      
  • 修正驱动路径的获取方式
    你代码里用Application.class.getClassLoader().getResource("driver/chromedriver.exe").getFile()获取路径,当项目打包成Jar包后,这个方法可能拿不到正确的路径(因为资源在Jar内部)。可以试试两种方案:

    1. 先直接写死绝对路径测试,确认驱动本身没问题:
      String driverPath = "C:\\your-local-path\\chromedriver.exe";
      System.setProperty("webdriver.chrome.driver", driverPath);
      driver = new ChromeDriver();
      driver.get("https://google.com");
      
    2. 如果用的是Selenium 4.6.0及以上版本,完全可以不用手动设置驱动路径,Selenium自带自动驱动管理:
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.chrome.ChromeDriver;
      
      public class Hook {
          private WebDriver driver;
      
          public void testInitializer(){
              driver = new ChromeDriver();
              driver.get("https://google.com");
          }
      }
      
  • 清理项目缓存并重新构建
    有时候旧的编译缓存或依赖缓存会导致奇怪的问题,你可以:

    • 清理Maven/Gradle的target/build目录
    • 重新执行mvn clean install(Maven)或./gradlew clean build(Gradle)命令,重新下载依赖并构建项目

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

火山引擎 最新活动