2017-10-05 8 views
0

こんにちは私はEclipseでMaven、TestNGでSeleniumスクリプトを実行しようとしています。 まず、自分のプロジェクトを右クリックし、TestNG | TestNGに変換します(testing.xmlが作成されます)。次にRun Configurationsに移動し、TestNGlを新規作成してRunをクリックします。それを実行すると、私はこのエラーを得た:FAILED CONFIGURATION:@BeforeTest beforeTest。 MAVEN; TestNG、Selenium

[RemoteTestNG]検出されたTestNGのバージョン6.11.0 失敗したコンフィギュレーション:@BeforeTest beforeTest java.lang.IllegalStateException:ドライバの実行ファイルへのパスがwebdriver.chromeで設定する必要があります。ドライバシステムプロパティ。詳細については、https://github.com/SeleniumHQ/selenium/wiki/ChromeDriverを参照してください。最新バージョンはhttp://chromedriver.storage.googleapis.com/index.html com.google.common.base.Preconditions.checkState(Preconditions.java:754) (org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124))からダウンロードできます。 org.openqa.seleniumでorg.openqa.selenium.chrome.ChromeDriverService $ Builder.findDefaultExecutable(ChromeDriverService.java:137)でorg.openqa.selenium.chrome.ChromeDriverService.access $ 000(ChromeDriverService.java:32) で .remote.service.DriverService $ Builder.build(DriverService.java:329) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver。( ChromeDriver.java:123) at test.java.NewTest.beforeTest(NewTest.java:2 7)sun.reflect.DelegatingMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) (DelegatingMethodAccessorImpl.java:43) でのJavaで.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523) ) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146) at org.testng.TestRunner.beforeRun(TestRunner.java :626) at org.testng.TestR org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 、org.testng.SuiteRunnerでunner.run(TestRunner.java:594) を返します。 (SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(private) SuiteRunnerWorker.java:86)org.testng.TestNG.runSuitesでorg.testng.TestNG.runSuitesLocally(TestNG.java:1226) でorg.testng.TestNG.runSuitesSequentially(TestNG.java:1301) で(TestNGの。 java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org.testng.remote.AbstractRemote org.testng.remote.RemoteTestNG.mainでorg.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) でTestNG.run(AbstractRemoteTestNG.java:114) (RemoteTestNG.java:77)

スキップされたコンフィグレーション:@AfterTest afterTest スキップ:f java.lang.IllegalStateException:ドライバの実行可能ファイルへのパスは、webdriver.chrome.driverシステムプロパティで設定する必要があります。詳細については、https://github.com/SeleniumHQ/selenium/wiki/ChromeDriverを参照してください。最新バージョンはhttp://chromedriver.storage.googleapis.com/index.html com.google.common.base.Preconditions.checkState(Preconditions.java:754) (org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124))からダウンロードできます。 org.openqa.selenium.chrome.ChromeDriverService.access $ 000(ChromeDriverService)の 。java32: at org.openqa.selenium.chrome.ChromeDriverService $ Builder.findDefaultExecutable(ChromeDriverService.java:137) at org.openqa.selenium.remote.service.DriverService $ Builder.build(DriverService.java:329) org.openqa.selenium.chrome.ChromeDriverでorg.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) で 。test.java.NewTest.beforeTestで(ChromeDriver.java:123) (NewTest .java:27) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)でat java.lang.reflect.Method.invoke(Method.jav a:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523) at org.testng.internal.Invoker。 invokeConfigurations(Invoker.java:224) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146) at org.testng.TestRunner.beforeRun(TestRunner.java:626) at org.testng.TestRunner。 run(TestRunner.java:594) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289)org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) でorg.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) でorg.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) ででorg.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org。 (RemoteTestNG.java:77) at org.testng.remote.RemoteTestNG.main

============================================== = テストを実行デフォルトのテスト:1、失敗:0、スキップ:1

設定エラー:1、スキップ:1

================== ================================= デフォルトスイート テストの合計実行数:1、失敗数:0、スキップ:1

設定エラー:1、スキップ:1

私は次のコードを持っている:

package test.java; 

import org.testng.annotations.AfterTest; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 

import junit.framework.Assert; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 


public class NewTest { 

private WebDriver driver; 

@Test 

public void f() { 
    // TODO Auto-generated method stub 
    String exePath = "/Users/********/Downloads/chromedriver"; 
    System.setProperty("webdriver.chrome.driver", exePath); 

    //WebDriver driver = new ChromeDriver(); 

    driver.get("https://www.apple.com/"); 
    String title = driver.getTitle();     
    Assert.assertTrue(title.contains("Apple"));   
} 

@BeforeTest 
public void beforeTest() { 
    driver = new ChromeDriver(); 
}  
@AfterTest 
public void afterTest() { 
    driver.quit();   
}  

} 

とのpom.xml以下:

project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>TestMaven</groupId> 
<artifactId>TestMaven</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<build> 
<sourceDirectory>src</sourceDirectory> 
<plugins> 
    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.5.1</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 
<dependencies> 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>3.6.0</version> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 
<dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.11</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.17</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.20.1</version> 
</dependency> 
</dependencies> 
</project> 

答えて

0

あなたは@beforeTestメソッドBECにプロパティを設定する必要があります。 @Testの前に実行されます。あなたのケースでは

は、あなたはそれをプロパティを設定する前に、ドライバのインスタンスを作成しようとしています。コードの下

試してください: -

@BeforeTest 
    public void beforeTest() { 
     String exePath = "/Users/********/Downloads/chromedriver/chromedriver.exe"; 
     System.setProperty("webdriver.chrome.driver", exePath); 
     driver = new ChromeDriver(); 
    } 

package test.java; 

import org.testng.annotations.AfterTest; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 

import junit.framework.Assert; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 


public class NewTest { 

private WebDriver driver; 

@Test 

public void f() { 

    driver.get("https://www.apple.com/"); 
    String title = driver.getTitle();     
    Assert.assertTrue(title.contains("Apple"));   
} 

@BeforeTest 
public void beforeTest() { 
String exePath = "/Users/********/Downloads/chromedriver/chromedriver.exe"; 
    System.setProperty("webdriver.chrome.driver", exePath); 

    driver = new ChromeDriver(); 
}  
@AfterTest 
public void afterTest() { 
    driver.quit();   
}  

} 
+0

私はそれを試してみたが、同じエラーを得た:失敗したコンフィギュレーション:@BeforeTest beforeTest java.lang.IllegalStateException:ドライバの実行可能ファイルへのパスwebdriver.chrome.driverシステムプロパティで設定する必要があります。 – EnislavMollov

+0

文字列exePath = "/ Users/********/Downloads/chromedriver" urパスはchromedriver.exeまででなければなりません。構文を参照してください 文字列exePath = "/ Users/******** /ダウンロード/ chromedriver/chromedriver.exe "; –

+0

chromedriverは* .exeファイルではありません。それは 'Unix executable'と言います。 – EnislavMollov

関連する問題