質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

1384閲覧

Java,setProperty で指定したはずのPathがプログラムを起動する方法によって変わってしまう。

reiji_nikol

総合スコア17

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/04/15 08:49

編集2021/04/16 02:48

Java&Selenium&Gradleをやってみようと思いましたがここでつまづき自力で解決できそうにありません。
プログラムの実行の方法が自身が把握している中で2つありますが、結果が異なります。
やったこと

  1. Sampleプロジェクト直下にてTerminalからコマンド「Gradle Build」、「Gradle Run」を実行。(IDEのRUN同様)

結果。エラーは起きず、予期している通りのプログラムが実行された。⇨「ドライバ:chromedriver」を指定できた。
0. Sample/app/build/distributions/app.tar を解凍し中にある「app」を実行
結果。添付した通りのエラーが起きた。(一部パス修正し添付)エラーには「ドライバーが指定されてない」と。⇨エラーを見ると
ホームディレクトリ直下のドライバを指定している。

わからないこと。

1のように2でも同じ結果を期待したいが、どこをどう修正すればいいかわからない。

ソース

一部のみ記載
setPropertyの第二要素の部分

java

1 public static void main(String[] args) throws InterruptedException { 2 System.out.println(new App().getGreeting()); 3 4 5 // Optional. If not specified, WebDriver searches the PATH for chromedriver. 6 System.setProperty("webdriver.chrome.driver", "chromedriver"); 7 8 WebDriver driver = new ChromeDriver(); 9 try { 10 driver.get("https://google.com"); 11 driver.manage().window().maximize(); 12 13

一応「build.gradle」もあげておく。

Gradle

1/* 2 * This file was generated by the Gradle 'init' task. 3 * 4 * This generated file contains a sample Java application project to get you started. 5 * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle 6 * User Manual available at https://docs.gradle.org/6.8.2/userguide/building_java_projects.html 7 */ 8 9plugins { 10 // Apply the application plugin to add support for building a CLI application in Java. 11 id 'application' 12} 13 14repositories { 15 // Use JCenter for resolving dependencies. 16 jcenter() 17} 18 19dependencies { 20 // Use JUnit test framework. 21 testImplementation 'junit:junit:4.13' 22 23 // This dependency is used by the application. 24 implementation 'com.google.guava:guava:29.0-jre' 25 26 // Use Selenium for testing. 27 implementation 'org.seleniumhq.selenium:selenium-java:3.141.59' 28 implementation 'org.seleniumhq.selenium:selenium-chrome-driver:3.141.59' 29 implementation 'org.seleniumhq.selenium:selenium-server:3.141.59' 30} 31 32application { 33 // Define the main class for the application. 34 mainClass = 'Sample_Package.App' 35} 36

プロジェクト内フォルダ構成

Sample
├── app
│ ├── bin
│ │ └── 省略
│ ├── build
│ │ ├── classes
│ │ ├── distributions
│ │ │ ├── app
│ │ │ │ ├── bin
│ │ │ │ └── lib
│ │ │ ├── app\ 2
│ │ │ │ ├── bin
│ │ │ │ │ ├── app
│ │ │ │ │ └── app.bat
│ │ │ │ └── lib
│ │ │ ├── app.tar
│ │ │ └── app.zip
│ ├── build.gradle
│ ├── chromedriver
│ └── src
│ └── main
│ ├── java
│ │ └── Sample_Package
│ │ └── App.java
│ └── resources
省略

エラー

Last login: Thu Apr 15 17:00:20 on ttys002
$ ~ % ~/Desktop/Develop/Java/Sample/app/build/distributions/app\ 2/bin/app ; exit;
Hello World!
Exception in thread "main" java.lang.IllegalStateException: The driver executable does not exist: ~/chromedriver
at com.google.common.base.Preconditions.checkState(Preconditions.java:589)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:146)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:141)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at Sample_Package.App.main(App.java:20)
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

上記がつまずいているエラーです。
コンソール出力されたエラー

動作環境:

機種ID: MacBookPro13,2
プロセッサ名: デュアルコアIntel Core i5
プロセッサ速度: 2.9 GHz
メモリ: 8 GB
システムファームウェアのバージョン: 429.80.1.0.0

Gradle 6.8.2

Build time: 2021-02-05 12:53:00 UTC
Revision: b9bd4a5c6026ac52f690eaf2829ee26563cad426

Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 15.0.1 (Oracle Corporation 15.0.1+9)
OS: Mac OS X 11.2.3 x86_64
Java

openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.2+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.2+7, mixed mode, sharing)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Luice

2021/04/16 01:02

gradle で実行した時のPathは ~/Desktop/Develop/Java/Sample/app/ で javaで実行した時のPathは ~/Desktop/Develop/Java/Sample/app/build/distributions/app\ ですか?
reiji_nikol

2021/04/16 01:39

質問ありがとう御座います! Gradleで実行したのは「~/Desktop/Develop/Java/Sample/」にcdで移動し、gradleコマンドを叩きました。 java実行したの認識がズレてたら申し訳ないです。Gradleによって生成されたファイル「~/Desktop/Develop/Java/Sample/app/build/distributions/app\ 2/bin/app」をFinderからダブルクリック(ターミナルから./実行と同義)した実行です。 要するに、ビルドツールが生成したプログラムを実行です。
Luice

2021/04/16 02:24

`System.setProperty("webdriver.chrome.driver", "chromedriver");` と設定しているので挙動としては... - gradle で実行した場合 「~/Desktop/Develop/Java/Sample/app/chromedriver」を探しに行く → 存在する - 「~/Desktop/Develop/Java/Sample/app/build/distributions/app/2/bin/app」をfinderから実行した場合 「~/Desktop/Develop/Java/Sample/app/build/distributions/app/2/bin/app/chromedriver」をまず探しに行く → 無い 指定されたパスにdriverが無いのでclasspathやOSで定義されているPathを探しに行く → 無いのでエラー となるはずです。 最後に探しに行ったのがホームディレクトリと言うだけで、本来あるべき場所にモノが無い事が真因です。
reiji_nikol

2021/04/16 02:51 編集

なるほど、「chromedriver」を以下のパスに設置したらTerminal上からは「./」コマンドでエラーなく実行できました。 「~/Desktop/Develop/Java/Sample/app/build/distributions/app/2/bin/app/chromedriver」 しかし、Finder上でダブルクリック実行はエラーになります。「~/User/hogehoge/chromedriver」を指定しているようです。 こちらの「Terminal上の./による実行とFinder上のファイルをダブルクリックによる実行で指定先が異なる」理由が「classpathやOSで定義されているPath」に関係していると推察できるのですが、どこで確認できますでしょうか?
Luice

2021/04/16 04:08

Mac持ってないので、Mac OSに関する事は分からないです。
reiji_nikol

2021/04/16 04:37

ありがとう御座います????
reiji_nikol

2021/04/19 01:42

「Mac持ってないので、Mac OSに関する事は分からないです。」 後々気になったのですが、Mac OS以外のことは知っている口ぶりですが、LinuxもしくはWindows、それ以外であればわかる。ということでしょうか? Mac OS以外のOSのclasspathやOSで定義されているPathはどこで確認できますでしょうか?
reiji_nikol

2021/04/23 16:25

探し求めてたドキュメントです!Gradle、Java、Seleniumのどのドキュメントに乗ってるかわからなくて…非常に助かりました!嫌味も交えていただきクソ感謝しています!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問