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

java.lang.NoSuchMethodError:com.google.common.base.premissions.checkState(ZLjava/lang/String;)和Selenium、gradle和ChromeDriver,java,selenium,gradle,selenium-webdriver,selenium-chromedriver,Java,Selenium,Gradle,Selenium Webdriver,Selenium Chromedriver,我正在尝试将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-shee

我正在尝试将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' }
我的selenium-Java代码:

System.setProperty("webdriver.chrome.driver", "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();
代码运行良好,我可以打开Chrome浏览器。 然而,在build.gradle中,我使用的是selenium和chromedriver的2.9.0版本。如果我尝试使用2.9.0之后的任何版本,它会在WebDriver=new ChromeDriver()中给出以下错误;方法:

线程“main”java.lang.NoSuchMethodError中的异常:com.google.common.base.premissions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V 位于org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124) 访问org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32) 位于org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) 位于org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339) 位于org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) 位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:123) 位于Quickstart.main(Quickstart.java:130) 我试着寻找gradle+Maven+selenium支持的版本。找不到任何好的信息。有什么想法吗

此错误消息

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客户端无法找到
ChromeDriver()

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

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


我有完全相同的问题(不过我使用的是Maven)

我注意到问题是,在
org.seleniumhq.selenium
旁边使用
com.google.api客户端
,或
com.google.api:google api服务表
会导致错误

问题是这两个依赖关系都依赖于不同的
com.google.guava:guava
工件

为了解决这个错误,您应该显式地依赖单个
com.google.guava:guava
工件。 因此,继续在您的
build.gradle
中添加以下内容:


编译'com.google.guava:guava:27.0.1-jre'

尝试将您的番石榴更新为

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

番石榴
番石榴
27.1-jre

它会解决你的问题。

我只是想在这里发帖子,以防其他人像我一样从谷歌找到这个。无论出于什么原因,我都需要使用
sudo
运行。我在使用npm
selenium standalone
软件包和运行时遇到问题:

/node_modules/selenium-standalone/bin/selenium-standalone start
这将表明这个错误。是什么让它和sudo一起运行的

sudo /node_modules/selenium-standalone/bin/selenium-standalone start

我不认为我以前需要这样做,但突然间,这是它现在唯一的工作方式。

我也遇到了同样的问题,并进行了依赖性检查,发现存在冲突。对我有效的解决方案是排除相互冲突的依赖项


您的项目可能与我的项目具有不同的依赖关系。因此,在我的项目中列出具体的冲突可能没有帮助

在pom.xml中复制并粘贴以下依赖项,然后执行maven构建:

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

      <!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>3.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.rest-assured/xml-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>xml-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/org.hamcrest/java-hamcrest -->
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>java-hamcrest</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>


    <!-- cucumber dependency begins -->


    <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
    <dependency>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting</artifactId>
    <version>4.7.0</version>
    </dependency>

    <!-- starts here -->
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-html -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-html</artifactId>
    <version>0.2.3</version>
</dependency>

<!-- https://mvnrepository.com/artifact/info.cukes/gherkin -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>gherkin</artifactId>
    <version>2.12.2</version>
    <scope>provided</scope>
</dependency>


<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>5.4.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.theoryinpractise/cucumber-testng-factory -->
<dependency>
    <groupId>com.theoryinpractise</groupId>
    <artifactId>cucumber-testng-factory</artifactId>
    <version>1.0.1</version>
</dependency>
<!--   https://stackoverflow.com/questions/49021707/java-lang-nosuchmethoderror-com-google-common-base-preconditions-checkstatezlj?rq=1  -->
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

  </dependencies>

朱尼特
朱尼特
4.12
测试
org.testng
testng
7.1.0
测试
放心吧
放心
3.0.0
测试
放心吧
json路径
3.0.0
放心吧
json模式验证器
3.0.0
放心吧
xml路径
3.0.0
org.hamcrest
爪哇汉克雷斯特
2.0.0.0
测试
网络智囊团
黄瓜报道
4.7.0
信息杯
黄瓜核
1.2.5
信息杯
黄瓜爪哇
1.2.5
测试
信息杯
黄瓜
1.2.5
聚甲醛
信息杯
黄瓜刺柏
1.2.5
测试
信息杯
黄瓜汁
1.0.5
信息杯
黄瓜html
0.2.3
信息杯
小黄瓜
2.12.2
假如
黄瓜
黄瓜试验
5.4.2
理论与实践
黄瓜试验厂
1.0.1
番石榴
番石榴
27.1-jre

仅仅添加以下内容是不够的

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

番石榴

帖子帮助

感谢您的回复!我试着下载chromedriver.exe并用它代替chrome.exe,问题仍然是一样的。问题是为什么build.gradle具有selenium依赖项2.9时,一切都可以正常工作(无论使用chrome.exe还是chromedriver.exe)。0@SwatiThorve根据当前版本的Selenium Client v3.9.1
Selenium dependencies>2.9.0
非常古老。自Selenium v2.9.0以来,发生了很多变化。因此,根据最佳实践,您需要将Selenium客户端、ChromeDriver和Chrome升级到当前级别,以获得更好的脚本性能。感谢Debanjan!是的,我知道2.9.0非常古老……我也不想使用它。这就是问题的原因:)当我尝试使用selenium 2.9+时,为什么在我的原始帖子中会出现错误?我有最新的ChromeV67和chromedriver。还有什么我需要检查的吗?了解JDK v8u162、Selenium v3.9.1、ChromeDriver v2.35和ChromeV64.x的所有最新版本。你会成功的。如果能提供更多关于你的解决方案工作的原因和方式/作用的信息,那就太好了。
 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

      <!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>3.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.rest-assured/xml-path -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>xml-path</artifactId>
    <version>3.0.0</version>
</dependency>

    <!-- https://mvnrepository.com/artifact/org.hamcrest/java-hamcrest -->
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>java-hamcrest</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>


    <!-- cucumber dependency begins -->


    <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
    <dependency>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting</artifactId>
    <version>4.7.0</version>
    </dependency>

    <!-- starts here -->
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-html -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-html</artifactId>
    <version>0.2.3</version>
</dependency>

<!-- https://mvnrepository.com/artifact/info.cukes/gherkin -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>gherkin</artifactId>
    <version>2.12.2</version>
    <scope>provided</scope>
</dependency>


<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>5.4.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.theoryinpractise/cucumber-testng-factory -->
<dependency>
    <groupId>com.theoryinpractise</groupId>
    <artifactId>cucumber-testng-factory</artifactId>
    <version>1.0.1</version>
</dependency>
<!--   https://stackoverflow.com/questions/49021707/java-lang-nosuchmethoderror-com-google-common-base-preconditions-checkstatezlj?rq=1  -->
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>

  </dependencies>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>