java.lang.IllegalAccessError:尝试访问方法com.google.common.util.concurrent.SimpleTimeLimiter。使用Selenium-Java 3.5.1或更高版本时

bas*_*der 2 java selenium webdriver maven selenium-webdriver

我想知道是否有人可以告诉我为什么我在使用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
Run Code Online (Sandbox Code Playgroud)

Deb*_*anB 6

此错误消息...

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
Run Code Online (Sandbox Code Playgroud)

...暗示您使用的WebDriver变体版本(即GeckoDriver / ChromeDriver)与相应的WebBrowser变体版本(即Firefox / Chrome)之间不匹配。

注意:您需要确保使用最新的JDK版本。


GeckoDriver-硒-Firefox

如果使用的是GeckoDriver - Selenium - Firefox组合,则需要遵循以下兼容性表:

support_platforms


ChromeDriver-Chrome

如果您使用的是ChromeDriver - Chrome组合,则需要确保二进制文件与以下条目兼容:

  • ChromeDriver v78.0.3904.70:支持Chrome版本78
  • ChromeDriver v77.0.3865.40:支持Chrome版本77
  • ChromeDriver v76.0.3809.126:支持Chrome版本76
  • ChromeDriver v75.0.3770.8:支持Chrome版本75
  • ChromeDriver v74.0.3729.6:支持Chrome版本74
  • ChromeDriver v73.0.3683.68:支持Chrome 73版
  • ChromeDriver v2.46:支持Chrome v71-73
  • ChromeDriver v2.45:支持Chrome v70-72
  • ChromeDriver v2.44:支持Chrome v69-71(与ChromeDriver 2.43相同,但具有其他错误修复)
  • ChromeDriver v2.43:支持Chrome v69-71
  • ChromeDriver v2.42:支持Chrome v68-70
  • ChromeDriver v2.41:支持Chrome v67-69
  • ChromeDriver v2.40:支持Chrome v66-68
  • ChromeDriver v2.39:支持Chrome v66-68
  • ChromeDriver v2.38:支持Chrome v65-67
  • ChromeDriver v2.37:支持Chrome v64-66
  • ChromeDriver v2.36:支持Chrome v63-65
  • ChromeDriver v2.35:支持Chrome v62-64
  • ChromeDriver v2.34:支持Chrome v61-63
  • ChromeDriver v2.33:支持Chrome v60-62
  • ChromeDriver v2.32:支持Chrome v59-61
  • ChromeDriver v2.31:支持Chrome v58-60
  • ChromeDriver v2.30:支持Chrome v58-60
  • ChromeDriver v2.29:支持Chrome v56-58
  • ChromeDriver v2.28:支持Chrome v55-57
  • ChromeDriver v2.27:支持Chrome v54-56

注意:几个月前,Chromium小组宣布了ChromeDriver的版本控制模式将发生变化的初步声明。现在,Chromium小组正在推进该计划。具体来说,ChromeDriver 2.46将是包含主要版本2的最新版本。未来的ChromeDriver版本将具有与Chrome版本类似的版本号。我们将从下周的ChromeDriver 73版本开始,而不是Beta版本的Chrome 73。

新发行模型的工作方式如下:

  • ChromeDriver将使用与Chrome相同的版本号方案。有关更多详细信息,请参见https://www.chromium.org/developers/version-numbers
  • 每个版本的ChromeDriver将支持具有匹配的主要,次要和内部版本号的Chrome。例如,即将推出的ChromeDriver 73.0.3683。*将支持所有以73.0.3683开头的Chrome版本。
  • 在新的主要版本的Chrome进入Beta版之前,将发布匹配版本的ChromeDriver。例如,下周将发布新版本的ChromeDriver,以与Beta版的Chrome m73相匹配。
  • 在最初发行新的主要版本之后,我们将根据需要发行补丁。这些修补程序可能与Chrome更新不同步。

此外,com.google.common.util.concurrent.SimpleTimeLimiterSelenum Grid节点似乎已成功注册到Selenum Grid Hub时,也从网格控制台确认了该错误,但在请求会话时,观察到以下错误:

org.openqa.selenium.WebDriverException: com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter;
Run Code Online (Sandbox Code Playgroud)

Selenium-Grid-Extras Hub (1.12.16)由于打包到JAR中的硒和番石榴依赖性之间的不一致而发生此错误

通过合并#367解决了该问题,使用Selenium v​​3.8.1将解决您的问题。

确保两点为:

  • Selenium Grid Extras版本大于(或等于)1.12.17
  • 番石榴的依赖关系已更新。