我正在尝试启动一个新的 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
您没有在代码中包含
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,它可以自动下载并配置适当的驱动程序。