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

Serenity测试框架无法实例化ChromeDriver问题求助

Serenity测试框架ChromeDriver实例化失败问题排查与解决

问题描述

运行Serenity测试类FirstTestCaseSerenity时抛出如下错误:

net.thucydides.core.webdriver.DriverConfigurationError: Could not instantiate class org.openqa.selenium.chrome.ChromeDriver
    at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:181)
    // 省略中间栈跟踪信息
Caused by: java.lang.NoSuchMethodError: 'void com.google.common.base.Throwables.throwIfUnchecked(java.lang.Throwable)'
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:192)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:Thechookie89 

测试代码如下:

@RunWith(SerenityRunner.class)
public class FirstTestCaseSerenity { 
@Managed WebDriver driver 
@Test public void dologin() { 
System.out.println("Debugging: Start of the test"); 
if (driver== null) {  
throw new IllegalStateException("WebDriver is null. Please check Serenity configuration.) } 
System.out.println("Debugging: Chromedriver path - " + System.getProperty("webdriver.chrome.driver"));
this.driver.get("https://google.com")}
}

根本原因

java.lang.NoSuchMethodError: 'void com.google.common.base.Throwables.throwIfUnchecked(java.lang.Throwable)' 核心原因是Guava依赖版本冲突:

  • Selenium 4.15.0需要特定版本的Guava(通常为31.1-jre或更高兼容版本)
  • 项目中Serenity框架或其他依赖引入了旧版Guava,导致Selenium调用的方法在旧版库中不存在,触发方法找不到错误。

解决方法

1. 锁定Guava依赖版本

通过依赖管理工具强制使用与Selenium 4.15.0兼容的Guava版本:

  • Maven:在pom.xml的dependencyManagement节点添加:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>31.1-jre</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • Gradle:在build.gradle中添加:
    configurations.all {
        resolutionStrategy.force 'com.google.guava:guava:31.1-jre'
    }
    

2. 确保Serenity与Selenium版本兼容

Serenity BDD版本需与Selenium版本匹配,建议使用Serenity 3.x系列(对应Selenium 4.x),避免版本不兼容引发的依赖冲突。

3. 修正测试代码语法错误

测试代码存在字符串未闭合、语法不完整问题,修正后:

@RunWith(SerenityRunner.class)
public class FirstTestCaseSerenity { 
    @Managed(driver = "chrome") 
    WebDriver driver; 

    @Test 
    public void dologin() { 
        System.out.println("Debugging: Start of the test"); 
        if (driver == null) {  
            throw new IllegalStateException("WebDriver is null. Please check Serenity configuration."); 
        } 
        System.out.println("Debugging: Chromedriver path - " + System.getProperty("webdriver.chrome.driver"));
        this.driver.get("https://google.com");
    }
}
  • 给@Managed注解指定driver="chrome",明确驱动类型
  • 修复字符串闭合问题,补全分号等语法细节

4. 验证ChromeDriver与浏览器版本匹配

确保本地Chrome浏览器版本与ChromeDriver版本一致,Serenity默认会自动管理ChromeDriver,若手动指定路径需保证版本完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:05:57