2016-08-03 6 views
1

Dies ist der Umstand. Ich bin ein QA-Automatisierungstechniker und gerade werde ich damit beauftragt, unser CI-Framework in Jenkins einzurichten, aber momentan habe ich Probleme mit Maven. Ich erhalte diesen Fehler, wenn ich versuche, den Befehl mvn test auszuführen. Die Tests funktionieren jedoch einwandfrei in Eclipse, wenn sie als Maven-Test ausgeführt werden.Mvn Test Cmd Linie Buildfehler, Test funktioniert in Eclipse

T E S T S 
------------------------------------------------------- 
Running TestSuite 
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configur 
[email protected] 
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configur 
[email protected] 
Tests run: 16, Failures: 1, Errors: 0, Skipped: 14, Time elapsed: 0.66 sec <<< F 
AILURE! 
beforeTest(fcstestingsuite.fsnrgn.LoginTest) Time elapsed: 0.442 sec <<< FAILU 
RE! 
java.lang.IllegalStateException: The path to the driver executable must be set b 
y the webdriver.chrome.driver system property; for more information, see https:/ 
/github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be dow 
nloaded from http://chromedriver.storage.googleapis.com/index.html 
     at com.google.common.base.Preconditions.checkState(Preconditions.java:19 
9) 
     at org.openqa.selenium.remote.service.DriverService.findExecutable(Drive 
rService.java:109) 
     at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDrive 
rService.java:32) 
     at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExe 
cutable(ChromeDriverService.java:137) 
     at org.openqa.selenium.remote.service.DriverService$Builder.build(Driver 
Service.java:296) 
     at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(C 
hromeDriverService.java:88) 
     at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:116) 

     at fcstestingsuite.fsnrgn.LoginTest.beforeTest(LoginTest.java:54) 


Results : 

Failed tests: beforeTest(fcstestingsuite.fsnrgn.LoginTest): The path to the dr 
iver executable must be set by the webdriver.chrome.driver system property; for 
more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. 
The latest version can be downloaded from http://chromedriver.storage.googleapis 
.com/index.html 

Tests run: 16, Failures: 1, Errors: 0, Skipped: 14 

Wie Sie sehen können, ist es mit meinem Chrom System Eigenschaft/Pfad verwandt. In meinem Projekt habe ich ein Testpaket und ein Seitenobjektpaket. Ich setze meine Chrom-System-Eigenschaft in der Objekt-Klasse und importiere diese Klasse in die Test-Klasse, die in Eclipse funktioniert. Ich bin mir nicht ganz sicher, warum Maven damit ein Problem hat. Siehe Beispielobjekt und Testklasse unter

Seite Klasse

package pageobjectfactory; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.FindBy; 
import org.testng.Assert; 
// URL = http://www.ourfsn.com/myfsn/ 

public class Ourfsnlogin { 

    @FindBy(id="ctl00_ContentPlaceHolder1_tbxUname") 
    WebElement login; 
    @FindBy(id="ctl00_ContentPlaceHolder1_tbxPword") 
    WebElement password; 
    @FindBy(id="ctl00_ContentPlaceHolder1_btnSubmit") 
    WebElement submit; 
    @FindBy(name="ctl00$ContentPlaceHolder1$rptAccounts$ctl01$AccountSwitch") 
    WebElement PETSMARTUS; 
    @FindBy(name="ctl00$ContentPlaceHolder1$rptAccounts$ctl02$AccountSwitch") 
    WebElement PETSMARTCAD; 
    @FindBy(name="ctl00$ContentPlaceHolder1$rptAccounts$ctl03$AccountSwitch") 
    WebElement PETSMARTPR; 
    @FindBy(id="ctl00_lblTopLogin") 
    WebElement PETSMARTUSASSERT; 
    @FindBy(id="ctl00_lblTopLogin") 
    WebElement PETSMARTCAASSERT; 
    @FindBy(id="ctl00_lblTopLogin") 
    WebElement PETSMARTPRASSERT; 
    @FindBy(id="ctl00_Menu1_16") 
    WebElement LogoutButton; 


    public static WebDriver driver; 
    public static void main(String[] args) { 
     System.setProperty("webdriver.chrome.driver","C:\\Users\\dmohamed\\Documents\\Testing Environment\\Testing Environment\\Web Drivers\\chromedriver_win32 (1)\\chromedriver.exe"); 
     WebDriver chromedriver = null; new ChromeDriver(); 


     driver= chromedriver; 


    } 


    //Send user name in textbox 
    public void sendUserName(String strUsername){ 
     login.sendKeys("ebluth");} 
    public void sendUserNameServiceCenter(String strUsername){ 
     login.sendKeys("servicecenter");} 
    public void sendUserNameSP(String strUsername){ 
     login.sendKeys("4328701"); 
    } 
    //Send Password 
    public void sendPassword(String strPassword){ 
     password.sendKeys("password");} 




    //submitting credentials 
    public void clicksubmit(){ 
     submit.click();} 
    //Checking US PAge 
    public void USAssertion(){ 
     PETSMARTUS.isEnabled(); 
    } 
    //Checking CAD page 
    public void CAAssertion(){ 
     PETSMARTCAD.isEnabled();} 
    //Checking PR Page 
    public void PRAssertion(){ 
     PETSMARTPR.isEnabled();} 
    //click us link 

    //Checking US PAge 
    public void USclick(){ 
     PETSMARTUS.click(); 
    } 
    //Checking CAD page 
    public void CAclick(){ 
     PETSMARTCAD.click();} 
    //Checking PR Page 
    public void PRclick(){ 
     PETSMARTPR.click();} 

    //Click on 
    public void USPageValidation(){ 
     Assert.assertTrue(PETSMARTUSASSERT.getText().contains("PETM-US"), "Incorrect Page [US,CA,PR]"); 

    } 
    public void PRPageValidation(){ 
     Assert.assertTrue(PETSMARTPRASSERT.getText().contains("PETM-PR"),"Incorrect Page [US,CA,PR]"); 
    } 
    public void CAPageValidation(){ 
     Assert.assertTrue(PETSMARTCAASSERT.getText().contains("PETM-CN"),"Incorrect Page [US,CA,PR]"); 
    } 
    //Log out 

    public void Logout(){ 
     LogoutButton.click(); 



    }} 

Test Class 
package fcstestingsuite.fsnrgn; 
import org.testng.annotations.Test; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.AfterMethod; 
import org.testng.annotations.AfterTest; 
import pageobjectfactory.Ourfsnlogin; 
import org.openqa.selenium.support.PageFactory; 
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; 

public class LoginTest { 
    static WebDriver driver; 
    Ourfsnlogin LoginPage; 

    @Test (priority=1) 
    public void USPageTest() { 
     LoginPage.sendUserName("ebluth"); 
     LoginPage.sendPassword("password"); 
     LoginPage.clicksubmit(); 
     LoginPage.USclick(); 
     LoginPage.USPageValidation(); 
    } 

    @Test(priority=2) 
    public void CAPageTest(){ 
     LoginPage.sendUserName("ebluth"); 
     LoginPage.sendPassword("password"); 
     LoginPage.clicksubmit(); 
     LoginPage.CAclick(); 
     LoginPage.CAPageValidation(); 
    } 


    @Test (priority=3) 
    public void PRPageTest(){ 
     LoginPage.sendUserName("ebluth"); 
     LoginPage.sendPassword("password"); 
     LoginPage.clicksubmit(); 
     LoginPage.PRclick(); 
     LoginPage.PRPageValidation(); 
    } 


    @AfterMethod 
    public void aftermethod(){ 
     LoginPage.Logout(); 
    } 



    @BeforeTest 
    public void beforeTest() { 
     Ourfsnlogin.driver=new ChromeDriver(); 
     //setting global explicit wait 
     PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this); 
     Ourfsnlogin.driver.get("http://www.ourfsn.com/myfsn"); 
     //initiating elements in page factory 
     LoginPage= PageFactory.initElements(Ourfsnlogin.driver, Ourfsnlogin.class); 

    } 

    @AfterTest 
    public void afterTest() { 
     Ourfsnlogin.driver.quit(); 


    } 

} 
+0

Vielleicht ist die 'webdriver.chrome.driver'-Eigenschaft in Ihrer Eclipse-Umgebung festgelegt, aber nicht auf Ihrem Betriebssystem, daher wird sie nicht von der Befehlszeile übernommen. Überprüfen Sie Ihre Eclipse-Einstellungen, ich würde mit den Maven-Laufkonfigurationen beginnen. – Tunaki

+0

Wie führen Sie Ihre Tests durch? durch XML? –

+0

Ja, ich habe den Test über XML ausgeführt. Nach einigen Grabungen habe ich festgestellt, dass Sie den Pfad zur Datei driver.exe in Ihrer Umgebungsvariablen PATH angeben müssen. Also tat ich das, nicht 100% sicher, ob das irgendwas tat (tat das und einige andere Aktionen), aber ich vermute es getan hat. – Lamar

Antwort

0

Die Struktur Ihrer Tests scheint falsch. Sie haben eine Hauptmethode in der Login-Seite, die die Treiberinstanziierung durchführt. Woher wird die Hauptmethode aufgerufen? Ihr Vortest hat auch einen Treiberinstanziierungscode, der von testng aufgerufen wird, aber Sie setzen die Eigenschaft chromedriver nicht.

Idealerweise sollte der Treiberinstanziierungscode an einer Stelle geschrieben und von den übrigen Testfällen konsumiert werden.

+0

Das war das Problem, ich habe nie die Methode aufgerufen, die die Systemeigenschaft festgelegt hat, sobald ich das gemacht habe, hat mein mvn test cmd funktioniert und die Treiberinstanziierung im Testcode war überflüssig. Danke vielmals ! – Lamar

Verwandte Themen