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

使用WebDriverManager初始化Chrome时遇NoSuchMethodError问题求助

解决WebDriverManager初始化Chrome时的NoSuchMethodError问题

一、修复Apache HttpClient5依赖冲突

这个错误源于项目中引入的Apache HttpClient5版本与WebDriverManager依赖的版本不兼容,导致目标方法无法找到。解决步骤:

  • 若使用Maven,执行mvn dependency:tree查看依赖树,找出所有org.apache.httpcomponents.client5相关依赖,排除项目手动引入或其他依赖传递的不兼容版本,确保WebDriverManager自带的HttpClient5版本生效。
  • 升级WebDriverManager至最新稳定版本(如5.x系列),保证其与Java 17、Chrome 118完全兼容。

二、优化WebDriver初始化代码

你的代码存在冗余调用和顺序问题,修正后代码如下:

@ExtendWith(MockitoExtension.class)
public class BrowserTest {

    static WebDriver driver;
    
    @BeforeAll
    static void setupClass() {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        // WebDriverManager自动完成驱动配置与实例创建
        driver = WebDriverManager.chromedriver()
                .capabilities(options)
                .create();
    }
    
    @AfterAll // 静态驱动只需在所有测试结束后关闭一次
    static void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }
    
    @Test
    public void test() {
        driver.get("https://bonigarcia.dev/selenium-webdriver-java/");
        String title = driver.getTitle();
        // 可添加断言验证,例如:Assertions.assertEquals("Selenium WebDriver with Java", title);
    }
}

代码修正说明:

  • 移除手动设置webdriver.chrome.driver的代码,WebDriverManager会自动管理驱动路径与版本。
  • 合并WebDriverManager的配置与实例创建步骤,通过capabilities(options)传入Chrome配置,create()直接生成WebDriver实例。
  • 将@AfterEach改为@AfterAll,避免静态驱动被重复关闭引发异常。
  • 添加driver空判断,防止未初始化时调用quit报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:21