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

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

新規登録して質問してみよう
ただいま回答率
85.48%
コマンドプロンプト

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

Eclipse

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

Q&A

解決済

2回答

8456閲覧

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

7snow

総合スコア12

コマンドプロンプト

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

Eclipse

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

0グッド

1クリップ

投稿2018/10/24 14:44

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

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

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/02 12:10

編集2018/11/07 04:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

7snow

2018/11/04 07:55 編集

回答ありがとうございます。 引用元を参考に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 04: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 06: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 03: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 は、消えませんか?
guest

0

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

で開けます

投稿2018/10/24 15:05

y_waiwai

総合スコア87747

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

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

7snow

2018/11/01 12:20

回答の通りコマンドプロンプトから下記コマンドを実行してみました。 結果、エラーにはなりませんでしたが、実行しても何も起こりませんでした。何処か間違えていますでしょうか。 >C:\eclipse\eclipse.exe -data C:\WorkSpace\ProjectA\bin\sample\GebSampleTestFrame.class
y_waiwai

2018/11/01 12:25

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問