Selenium Devtools NoSuchMethodError

问题描述 投票:0回答:1

我正在尝试启动一个新的 DevToolsSession:

 WebDriverManager.chromedriver().driverVersion("121.0.6167.184").setup();
 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

java selenium-webdriver selenium-chromedriver
1个回答
0
投票

您没有在代码中包含

driver
的声明,但我猜您是这样声明的

WebDriver driver = new ChromeDriver();

问题是

WebDriver
不支持
.getDevTools()
方法。只有
ChromeDriver
可以。将您的声明更改为以下内容,它对我来说没有错误。

ChromeDriver driver = new ChromeDriver();
driver.manage().window().maximize();
DevTools devTools = driver.getDevTools();
devTools.createSession();

此外,您不再需要使用外部 DriverManager。从 v4.6 开始,Selenium 现在包含 SeleniumManager,它可以自动下载并配置适当的驱动程序。

© www.soinside.com 2019 - 2024. All rights reserved.