我的 Chrome 版本是 75.0.3770.142,我在代码中使用 ChromeDriver 75.0.3770.90 并具有以下 pom 依赖项
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.5.3</version>
</dependency>
当我尝试运行测试时,chromedriver 无法加载。它给出以下错误
java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.<init>(Ljava/util/concurrent/ExecutorService;)V from class org.openqa.selenium.net.UrlChecker
at org.openqa.selenium.net.UrlChecker.<init>(UrlChecker.java:67) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:175) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144) ~[selenium-remote-driver-2.53.1.jar:na]
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170) ~[selenium-chrome-driver-2.53.1.jar:na]
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:138) ~[selenium-chrome-driver-2.53.1.jar:na]
at com.bfwg.service.impl.TestSuiteServiceImpl.loadWebDriver(TestSuiteServiceImpl.java:120) ~[classes/:na]
at com.bfwg.service.impl.TestSuiteServiceImpl.execute(TestSuiteServiceImpl.java:86) ~[classes/:na]
at com.bfwg.service.impl.TestSuiteServiceImpl$$FastClassBySpringCGLIB$$517eb5f7.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669) ~[spring-aop-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at
Starting ChromeDriver 75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003}) on port 23065
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
最佳答案
此错误消息...
java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.<init>(Ljava/util/concurrent/ExecutorService;)V from class org.openqa.selenium.net.UrlChecker
...意味着 ChromeDriver 无法启动/生成新的 WebBrowser,即 Chrome 浏览器 session 。
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您正在使用 chromedriver=75.0
- 您的 Selenium 客户端版本是 2017-08-29T12:42:44.417Z 的 3.5.3,几乎是 2 老了几岁。
- 我们不知道您的JDK 版本。
因此,Selenium Client v3.5.3 和 ChromeDriver v2.46 之间存在明显的不匹配。
<小时/>解决方案
- 将 JDK 升级到当前级别 JDK 8u212 .
- Selenium 升级至当前级别 Version 3.141.59 .
- ChromeDriver 已更新为当前 ChromeDriver v76.0级别。
- Chrome 已更新至当前 Chrome 版本 76.0 级别。 (根据 ChromeDriver v76.0 release notes )
- 通过IDE清理您的项目工作区,并仅使用所需的依赖项重建项目。
- 如果您的基本Web 客户端版本太旧,请将其卸载并安装最新的 GA 和已发布版本的Web 客户端。
- 以非root用户身份执行
@Test
。
You can find a detailed analysis on com.google.common.util.concurrent.SimpleTimeLimiter in the discussion java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter. when using Selenium-Java 3.5.1 or above
关于java.lang.IllegalAccessError : tried to access method com. google.common.util.concurrent.SimpleTimeLimiter 与 Selenium ChromeDriver Chrome 与 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277355/