java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) 与 Selenium、gradle 和 ChromeDriver [英] java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) with Selenium, gradle and ChromeDriver

查看:51
本文介绍了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();

这篇关于java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;) 与 Selenium、gradle 和 ChromeDriver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆