所以,我正在使用 Selenium 和 gradle 在 Java 上构建一个测试项目。现在我需要从之前截取的屏幕截图中扫描二维码。我环顾四周,发现 ZXing 扫描仪代码似乎是最好的建议。(如果不是,请告诉我。)我的问题是,从我将 'com.google.zxing:zxingorg:3.3.1' 依赖项添加到我的 build.gradle 文件的那一刻起,即使我不写任何附加代码(我尝试过有无),网络驱动程序停止工作,我收到以下消息:
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)
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:175)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:128)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:141)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:174)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:163)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:152)
at Specification.ClientFactory.initContext(ClientFactory.groovy:81)
at Specification.ClientFactory.<init>(ClientFactory.groovy:61)
at Specification.BaseTest.setupSpec(BaseTest.groovy:14)
Test ignored.
出现此错误的代码是我用来启动 Selenium WebDriver 的代码:
ClientFactory(){
initUrl() //allows to change the URL of the application under test when needed
initContext(urlWebsite,initWebBrowser()) //switchcase to read the browser from a config file
initClient() //initialization of the different classes with the elements I'm accessing
}
错误中提到的第 61 行是指 Chrome WebDriver 的初始化:
webDriver = new ChromeDriver(options)
(我尝试禁用这些选项,我得到的错误是完全相同的,所以我认为问题不是来自那里。)
我已经看了很长时间,但没有发现任何关于这个错误的信息。我不知道的 Selenium 和 ZXing 依赖项之间是否存在冲突?如果是这样,有没有办法超越它?如何?
更新:对于碰巧遇到类似问题的人,如果您退回到早期版本的 selenium-java 和 ZXing,则不会发生此问题。我设法克服了我的 build.gradle 文件中的 'org.seleniumhq.selenium:selenium-java:3.0.1' 和 'com.google.zxing:zxingorg:3.2.1' 的问题,它们不是最新的,但它是这样工作的