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

Selenium DevTools调用createSession时出现NoSuchMethodError错误求助

Selenium DevTools创建会话抛出NoSuchMethodError问题解决

问题代码

尝试启动DevTools会话的代码:

WebDriverManager.chromedriver().driverVersion("121.0.6167.184").setup();
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();
devTools.createSession();

报错信息

运行后抛出以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
    at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
    at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
Caused by: java.lang.NoSuchMethodError: 'java.util.function.Function org.openqa.selenium.devtools.ConverterFunctions.map(java.lang.String, java.util.function.Function)'
    at org.openqa.selenium.devtools.v121.target.Target.getTargets(Target.java:153)
    at org.openqa.selenium.devtools.v121.v121Target.getTargets(v121Target.java:55)
    at org.openqa.selenium.devtools.DevTools.findTarget(DevTools.java:171)
    at org.openqa.selenium.devtools.DevTools.createSession(DevTools.java:131)
    at org.openqa.selenium.devtools.DevTools.createSession(DevTools.java:117)

当前依赖配置(pom.xml)

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.19.1</version>
</dependency>
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.8.0</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-devtools-v121</artifactId>
    <version>4.19.1</version>
</dependency>

环境信息

  • Chrome浏览器版本:121.0.6157.0
  • ChromeDriver版本:121.0.6167.184
  • 导入的类:
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import io.github.bonigarcia.wdm.WebDriverManager;

问题原因及解决办法

这个错误是Selenium核心包与DevTools包版本不兼容导致的:ConverterFunctions.map(String, Function)方法在你使用的Selenium 4.19.1核心包中不存在,但devtools-v121包却在调用这个方法,本质是依赖冲突或版本匹配问题。

解决步骤:

  1. 检查依赖冲突
    用Maven命令查看项目依赖树,确认是否有其他依赖引入了旧版Selenium:

    mvn dependency:tree
    

    如果发现冲突,在对应的依赖中排除旧版Selenium相关组件:

    <dependency>
        <!-- 替换为实际冲突的依赖坐标 -->
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>xxx</version>
        <exclusions>
            <exclusion>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-devtools</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  2. 切换Selenium版本
    Selenium 4.19.1的devtools-v121存在兼容性问题,建议降级到4.18.1,该版本的核心包与devtools-v121匹配度更稳定:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.18.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-devtools-v121</artifactId>
        <version>4.18.1</version>
    </dependency>
    
  3. 简化DevTools初始化
    不需要手动调用createSession(),driver.getDevTools()会自动完成会话初始化,直接使用即可:

    WebDriverManager.chromedriver().driverVersion("121.0.6167.184").setup();
    ChromeDriver driver = new ChromeDriver();
    DevTools devTools = driver.getDevTools();
    // 直接调用devTools的方法,比如设置设备模拟
    // devTools.send(Emulation.setDeviceMetricsOverride(375, 667, 1.0, false));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:52:05