java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) 与 Selenium、gradle 和 ChromeDriver

Swa*_*rve 5 java selenium gradle selenium-chromedriver selenium-webdriver

我正在尝试将 Selenium api 与 Gradle 一起使用。这是我的 build.gradle 依赖部分:

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

我的硒 - Java 代码:

System.setProperty("webdriver.chrome.driver", "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)

代码工作正常,我可以打开 Chrome 浏览器。但是,在 build.gradle 中,我使用 2.9.0 版本的 selenium 和 chromedriver。如果我尝试使用 2.9.0 之后的任何版本,它会在 WebDriver driver = new ChromeDriver(); 中给出以下错误 方法:

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

我尝试寻找 gradle+Maven+selenium 支持的版本。无法找到任何好的信息。任何想法?

Deb*_*anB 4

这个错误信息...

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

...意味着Java 客户端无法找到ChromeDriver().

问题及解决方案

根据您共享的Selenium-Java 代码System.setProperty(),该行用于设置ChromeDriver二进制路径而不是 chrome 二进制路径。为此,您必须从ChromeDriver - WebDriver for Chrome下载ChromeDriver二进制文件,并将其放置在您的系统中,并通过行提及ChromeDriver的绝对路径。因此你必须改变:System.setProperty()

System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)

到 :

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)