我想知道是否有人可以告诉我为什么在使用Selenium-Java 3.5.1或更高版本时出现以下错误 -
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
答案 0 :(得分:4)
此错误消息......
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
...暗示 WebDriver 变体版本(即 GeckoDriver / ChromeDriver )与版本之间存在不匹配您正在使用的相应 WebBrowser 变体(即 Firefox / Chrome )。
注意:您需要确保使用最新的JDK版本。
如果您使用 GeckoDriver - Selenium - Firefox 组合,则需要遵循以下兼容性图表:
如果您使用 ChromeDriver - Chrome 组合,则需要确保二进制文件符合以下条目:
注意:几个月前, Chromium团队提出preliminary announcement ChromeDriver的版本控制模型将会发生变化。现在 Chromium团队正在推进该计划。具体来说,ChromeDriver 2.46将是最新版本的主要版本2.未来的ChromeDriver版本将带有类似于Chrome版本的版本号。我们将在下周发布ChromeDriver 73之前,在Chrome 73发布测试版之前。
以下是新版本模型的工作原理:
此外,当 Selenum网格节点似乎已成功注册到 Selenum Grid Hub 时,也会发现此错误com.google.common.util.concurrent.SimpleTimeLimiter
,并且网格控制台,但在请求会话时,观察到以下错误:
org.openqa.selenium.WebDriverException: com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter;
Selenium-Grid-Extras Hub (1.12.16)
发生此错误,因为打包到JAR中的selenium和guava依赖项之间的不一致
此问题已通过合并#367解决,使用 Selenium v3.8.1 将解决您的问题。
确保两点为:
答案 1 :(得分:2)
在我先前的pom.xml中,这是条目:
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
以下错误被抛出,
错误:java.lang.IllegalAccessError:尝试访问方法 com.google.common.util.concurrent.SimpleTimeLimiter。(Ljava / util / concurrent / ExecutorService;)V 从类org.openqa.selenium.net.UrlChecker
然后我用最新版本更新了POM:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
我再也没有看到错误。希望这会有所帮助。
答案 2 :(得分:1)
签入POM.XML文件,将具有2个“ selenium-chrome-driver”依赖项。 因此,那里的依赖关系以及需要采取的例外情况都会给您带来困惑。更改后,我的一个正在工作。