gpt4 book ai didi

java - Mvn Test 命令行构建失败,测试在 Eclipse 中运行

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:08 25 4
gpt4 key购买 nike

情况就是这样。我是一名 QA 自动化工程师,现在我负责在 Jenkins 中设置 CI 框架,但现在我遇到了 Maven 问题。当我尝试运行 mvn test 命令时,出现以下错误。然而,当作为 Maven 测试运行时,测试在 Eclipse 中完美运行。

 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configur
ator@3830f1c0
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configur
ator@bd8db5a
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

如您所见,它与我的 chrome 系统属性/路径有关。在我的项目中,我有一个测试包和页面对象包。我在对象类中设置了 chrome 系统属性,并将该类导入到测试类中,该类在 Eclipse 中运行良好。我不太清楚为什么 Maven 会遇到这个问题。请参阅下面的示例对象和测试类

页面类

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();


}

}

最佳答案

您的测试结构似乎不正确。 LoginPage 中有一个 main 方法 - 它正在执行驱动程序实例化。 main方法是从哪里调用的?您的 beforetest 也有一个由 testng 调用的驱动程序实例化代码,但您没有设置 chromedriver 属性。

理想情况下,驱动程序实例化代码应编写在一处,并从其余测试用例中使用。

关于java - Mvn Test 命令行构建失败,测试在 Eclipse 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com