因此,我正在使用 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 依赖项之间是否存在我不知道的冲突?如果是的话,有没有办法超越呢?如何?
UPDATE:对于遇到类似问题的人来说,如果您退回到早期版本的 selenium-java 和 ZXing,则不会出现此问题。我设法克服了 build.gradle 文件中的 'org.seleniumhq.selenium:selenium-java:3.0.1' 和 'com.google.zxing:zxingorg:3.2.1' 的问题,这不是最新的,但它是这样工作的