java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) 与 Selenium、gradle 和 ChromeDriver
我正在尝试在 Gradle 中使用 Selenium api.这是我的 build.gradle 依赖项部分:
I am trying to use Selenium api with Gradle. This is my build.gradle dependency section:
dependencies {
compile 'com.google.api-client:google-api-client:1.23.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-sheets:v4-rev506-1.23.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.9.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '2.9.0' }
我的硒 - Java 代码:
My selenium - Java code:
System.setProperty("webdriver.chrome.driver", "C:\Program Files(x86)\Google\Chrome\Application\chrome.exe");
WebDriver driver = new ChromeDriver();
代码工作正常,我可以打开 Chrome 浏览器.但是,在 build.gradle 中,我使用的是 2.9.0 版本的 selenium 和 chromedriver.如果我尝试使用 2.9.0 之后的任何版本,它会在 WebDriver driver = new ChromeDriver(); 中给我以下错误.方法:
Code works fine, and I am able to get Chrome browser opened. However, in build.gradle, I am using 2.9.0 version of selenium and chromedriver. If I try to use any version after 2.9.0, it gives me below error in WebDriver driver = new ChromeDriver(); method:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at Quickstart.main(Quickstart.java:130)
我尝试寻找 gradle+Maven+selenium 支持的版本.无法找到任何好的信息.任何的想法?
I tried looking for gradle+Maven+selenium supported version. Was not able to find any good info. Any idea?
此错误信息...
Exception in thread "main" java.lang.NoSuchMethodError:
com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
...表示 Java Client 无法找到 ChromeDriver()
.
...implies that the Java Client was unable to find ChromeDriver()
.
根据您分享的 Selenium - Java 代码,System.setProperty()
行用于设置 ChromeDriver 二进制路径不是 chrome 二进制路径.为此,您必须从 ChromeDriver 二进制文件em>ChromeDriver - WebDriver for Chrome 并将其放置在您的系统中,并通过 System.setProperty()
行提及 ChromeDriver 的绝对路径.因此你必须改变:
As per the Selenium - Java code you have shared, the System.setProperty()
line is used to set the ChromeDriver binary path not the chrome binary path. For that you have to download the ChromeDriver binary from the ChromeDriver - WebDriver for Chrome and place it in your system and mention the absolute path of the ChromeDriver through System.setProperty()
line. Hence you have to change :
System.setProperty("webdriver.chrome.driver", "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");
WebDriver driver = new ChromeDriver();
致:
System.setProperty("webdriver.chrome.driver", "C:\path\to\chromedriver.exe");
WebDriver driver = new ChromeDriver();