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

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

ただいまの
回答率

90.50%

  • Eclipse

    1926questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • コマンドプロンプト

    426questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

コマンドプロンプトからeclipseを実行する方法

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,088

7snow

score 3

eclipseを使用して、Selenium WebDriver用のテストコードを書きましたが。コマンドプロンプトから対象のテストコードを実行したい。
■理由■
社内の製造試験でWebブラウザの設定変更を自動化したく、試験者にeclipseの画面操作を行うことなく、テストコードを実行するバッチを実行するだけの操作に留めたい。そのためバッチに記述するコマンドをどうか、教えていただけないでしょうか。

■使用環境■
(※他に必要な情報があれば、確認します。)
eclipse:Photon
OS:Windows 7 64bit
Webブラウザ:chrome
ChromeDriver 2.41, Selenium 3.14.0

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

mainか、junitかで、多少の違いがありますが、junitなら下記にて、起動するはず。

mainの場合は「packageは無し」の必要はなく、
.bat内でpackageへのclasspathを正しく設定すれば、「java.exe(org.junit.runner.JUnitCore)」はmain(@Test)を認識してくれます。

記:junitの場合、、、

(junitはjunit-4.10.jarを使ってください。他はダメみたいです。ググって知りました。)
junit-4.12.jarでも動きました。

https://www.htmlhifive.com/conts/web/view/library/webdriver-howtouse

を引用。

HifiveSiteTest.java

相対パスを止める。

System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");

↓

System.setProperty("webdriver.chrome.driver", "chromedriver.exe");

packageは無しにして、(workspacePath+プロジェクト)\bin\直下に

HifiveSiteTest.class

が生成される様にする。

(org.junit.runner.JUnitCoreがパッケージパスを認識してくれない模様)

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;


public class HifiveSiteTest {

              private WebDriver driver;

              @BeforeClass
              public static void Setup() {
                            System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
              }

              @Before
              public void testBefore() {
                            driver = new ChromeDriver();
              }

              @After
              public void testAfter() {
                         driver.quit();
              }

              @Test
              public void test1() {
                            // ページを開く
                            driver.get("http://www.htmlhifive.com/conts/web/view/Main/WebHome");

                            // 「ガイド」タブの上にマウスオーバーする
                            WebElement elGuide = driver.findElement(By.cssSelector(".guide>.tab>span"));
                            Actions action = new Actions(driver);
                            action.moveToElement(elGuide).perform();

                            // バルーンが表示されるまで待機する
                            WebElement elBalloon = driver.findElement(By.cssSelector(".guide>.balloon"));
                            WebDriverWait wait = new WebDriverWait(driver, 10);
                         wait.until(new ExpectedCondition<Boolean>() {
                                       public Boolean apply(WebDriver driver) {
                                                     return elBalloon.isDisplayed();
                                       }
                         });

                         // 表示されたバルーンの「チュートリアル」をクリックする
                            WebElement elTutorial = driver.findElement(By.className("tutorial"));
//                          if (driver.getCapabilities().getBrowserName().toLowerCase().equals("internet explorer")) {
//                                        // IEでのテスト時はマウスカーソルがブラウザ上にないとバルーンが表示されない
//                                        // IEではsendKeysでEnterしないとチュートリアルのページが表示されない
//                                        elTutorial.sendKeys(Keys.ENTER);
//                          } else {
                                          elTutorial.click();
//                          }

                            // チュートリアルのページが表示されていることを確認する
                            wait = new WebDriverWait(driver, 10);
                         WebElement elTitle =  wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("document-title")));
                         assertEquals("チュートリアルページが表示されていること。", elTitle.getText(), "チュートリアル");
              }


}

(workspacePath+プロジェクト)\bin\に
chromedriver.exe
を置く。

.bat

cd (workspacePath+プロジェクト)\bin

set classpath=..\lib\*;.


java -classpath %classpath% org.junit.runner.JUnitCore HifiveSiteTest

pause
              @After
              public void testAfter() {
                         driver.quit();
              }


でエラーするけど、気にしない。

追記=== HifiveSiteTest.groovyの場合 ===

System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");

↓

System.setProperty("webdriver.chrome.driver", "chromedriver.exe");


の変更は不要

batは

cd (workspacePath+プロジェクト)

set classpath=..\lib\*;bin\;


java -classpath %classpath% org.junit.runner.JUnitCore HifiveSiteTest

pause


としたら、

@After
public void testAfter() {
     driver.quit();
}


でのエラーは無くなりました。

あと、groovy-all-x.x.x.jarがclasspathに必要なので、eclipse内のgroovy-all-x.x.x.jarをlibにコピー。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/04 12:44 編集

    回答ありがとうございます。
    引用元を参考にeclipseで新規Javaプロジェクトを作成したあとに、回答通りに編集してbatファイルを実行した結果、見事にbatからWebブラウザ操作が実行できました。(私の環境:Junitの場合、特にエラーもなく実行できました。)
    そして、私が書いたGradleプロジェクトに流用してみると、下記エラーが発生しWeb操作も実行されませんでした。エラーコードをみてgroovyの設定か何かが不足しているのかと思いますが、解決策が分かりません。すみませんが、解決策を教えていただけないでしょうか。

    ```
    C:\Users\xxx\Desktop>cd C:\WorkSpace\ProjectA\bin

    C:\WorkSpace\ProjectA\bin>set classpath=..\lib\*;.

    C:\WorkSpace\ProjectA\bin>java -classpath ..\lib\*;. org.junit.runner.JUnitCore HifiveSiteTest
    JUnit version 4.10
    Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:291)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:89)
    at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:45)
    Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 14 more

    C:\WorkSpace\ProjectA\bin>pause
    続行するには何かキーを押してください . . .
    ```

    キャンセル

  • 2018/11/05 13:57

    eclipseからは実行出来ていますでしょうか?

    プログラム実行の先頭ですが、
    >Exception in thread "main" java.lang.NoClassDefFoundError:
    と言う事は
    「junitの@Test」ではなく、
    「public static void main(String[] args) {」
    でしょうか?
    もしそうなら「jar」にすれば良いと思いますが。

    >エラーコードをみてgroovyの設定か何かが不足

    「groovy」を使ったことがないので、分からないのですが、
    一般的に必要なclass、jarをclasspathにセットすれば、
    クラスの参照は解決します。

    classpathが長くなる様なら、
    java -classpath %classpath% 。。。
    の様にjava.exeの-classpathには環境変数で渡してください。

    groovyに関しては、お役に立てなくて済みません。

    キャンセル

  • 2018/11/05 15:29

    >Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject

    >(org.junit.runner.JUnitCoreがパッケージパスを認識してくれない模様)

    >groovy/lang/GroovyObject

    以上のことからの
    >java.lang.NoClassDefFoundError
    かも。

    「Selenium WebDriver」で検索すると、いろいろ見つかるので、try and errorして見てください。

    キャンセル

  • 2018/11/07 12:33

    eclipseにGroovyをいれてみました。

    eclipseのプロジェクト「ProjectA」の「どこかのライブラリ(Groovy Libraries?)」の中に
    「groovy-all-x.x.x.jar」が有りませんか?

    もし有れば、右クリックでプロパティを開き、パスの
    「C:/。。。/eclipse/plugins/org.codehaus.groovy_x.x.xx.xx-yyyyMMddhhmm-exx/lib/」
    までをコピーし、Exploreで開き、
    groovy-all-x.x.x.jar
    (groovy-all-x.x.x-sources.jarでは無いです。)
    を「lib」にコピーすると、

    >Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject

    は、消えませんか?

    キャンセル

0

eclipseのフルパス -data ワークスペースのパス

で開けます

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/01 21:20

    回答の通りコマンドプロンプトから下記コマンドを実行してみました。
    結果、エラーにはなりませんでしたが、実行しても何も起こりませんでした。何処か間違えていますでしょうか。

    >C:\eclipse\eclipse.exe -data C:\WorkSpace\ProjectA\bin\sample\GebSampleTestFrame.class

    キャンセル

  • 2018/11/01 21:25

    -data の後ろは、ワークスペースのディレクトリを入れます。
    ファイルを指定するのではありません

    キャンセル

同じタグがついた質問を見る

  • Eclipse

    1926questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • コマンドプロンプト

    426questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。