GradleでSelenium APIを使用しようとしています。これは私の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' }
私のセレン-Javaコード:
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();メソッドで以下のエラーが発生します。
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対応バージョンを探してみました。良い情報を見つけることができませんでした。何か案が?
Guavaを更新してみてください
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
それはあなたの問題を解決します。
このエラーメッセージ...
_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()
を見つけられなかったことを意味します。
共有したSelenium-Java codeに従って、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();
_
へ:
_System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
_
私はまったく同じ問題を抱えています(私はMavenを使用しています)。
問題はcom.google.api-client
、com.google.oauth-client
、com.google.apis:google-api-services-sheets
のいずれかをorg.seleniumhq.Selenium
と一緒に使用するとエラーが発生することであることに気付きました。
問題は、両方の依存関係が異なるcom.google.guava:guava
アーティファクトに依存していることです。
エラーを解決するには、単一のcom.google.guava:guava
アーティファクトに明示的に依存する必要があります。だから、あなたのbuild.gradle
に以下を追加してください:
compile 'com.google.guava:guava:27.0.1-jre'
私のように他の誰かがGoogleからこれにアクセスした場合に備えて、ここに投稿したかっただけです。何らかの理由で、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>