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

Maven化TestNG项目出现ChromeDriver AbstractMethodError问题求助

问题描述

将现有项目转为Maven项目后,已引入selenium-java、selenium-server、selenium-chrome-driver、TestNG及JUnit等依赖,运行TestNG项目时出现以下错误:

Exception in thread "main" java.lang.AbstractMethodError: Receiver class org.openqa.selenium.chrome.ChromeDriverService$Builder does not define or inherit an implementation of the resolved method 'abstract void loadSystemProperties()' of abstract class org.openqa.selenium.remote.service.DriverService$Builder.
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:504)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:162)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:52)

当前引入的Maven依赖如下:

<dependencies>
        <!-- selenium-java -->
        <dependency>
            <groupId>org.openqa.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.10.0</version>
        </dependency>

        <!-- selenium-server -->
        <dependency>
            <groupId>org.openqa.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>3.9.0</version>
        </dependency>

        <!-- selenium-chrome-driver -->
        <dependency>
            <groupId>org.openqa.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>4.9.0</version>
        </dependency>

        <!-- TestNG -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.3.0</version>
            <scope>test</scope>
        </dependency>

        <!-- JUnit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.6</version>
            <scope>test</scope>
        </dependency>

        <!-- selenium-support -->
        <dependency>
            <groupId>org.openqa.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>4.10.0</version>
        </dependency>

        <!-- webdriver-expected-conditions -->
        <dependency>
            <groupId>ru.stqa.selenium</groupId>
            <artifactId>webdriver-expected-conditions</artifactId>
            <version>1.0.41</version>
        </dependency>
    </dependencies>

代码中初始化ChromeDriver的逻辑:

System.setProperty("webdriver.chrome.driver", "path");
WebDriver driver = new ChromeDriver();
解决方案

这个错误的核心原因是Selenium各组件版本不一致,不同版本的类定义不兼容,导致抽象方法找不到实现。具体来说,selenium-server使用了3.9.0的旧版本,而其他Selenium核心组件是4.x版本,版本混乱引发方法签名不匹配。

1. 统一所有Selenium组件的版本

将所有org.seleniumhq.selenium下的依赖版本统一为同一个稳定版本(推荐使用4.10.0),同时简化依赖:

  • selenium-java已经包含了selenium-chrome-driver、selenium-support等核心组件,无需单独引入;
  • Selenium4中已整合旧版selenium-server的功能,无需单独引入该依赖。

修正后的依赖如下:

<dependencies>
    <!-- Selenium核心依赖,包含所有必要组件 -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.10.0</version>
    </dependency>

    <!-- TestNG测试框架 -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.3.0</version>
        <scope>test</scope>
    </dependency>

    <!-- JUnit(如需兼容JUnit测试,建议升级到稳定新版本) -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>

    <!-- 第三方预期条件扩展(如仍需使用) -->
    <dependency>
        <groupId>ru.stqa.selenium</groupId>
        <artifactId>webdriver-expected-conditions</artifactId>
        <version>1.0.41</version>
    </dependency>
</dependencies>

2. 优化ChromeDriver初始化逻辑

Selenium 4.6+版本已内置WebDriverManager,无需手动设置webdriver.chrome.driver系统属性,可简化代码为:

WebDriver driver = new ChromeDriver();

若需指定驱动路径,需确保驱动版本与Chrome浏览器版本匹配,推荐使用WebDriverManager自动管理驱动版本。

3. 清理依赖并重构项目

  • 移除重复、不必要的依赖;
  • 执行mvn clean install清理旧依赖缓存,重新构建项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:32:08