java运行出现XML_java-如果我通过testng.xml运行测试,则获取Nul...

本文介绍了一个关于TestNG自动化测试的问题,在使用TestNG框架进行自动化测试时遇到NullPointerException异常,问题出现在导航菜单组件的点击操作上。

序言:我是自动化测试的新手

我在两次测试中遇到问题,我尝试将它们作为一个套件运行在testng.xml中.但是,如果我分开运行它们,它们会正常工作.

这是我的代码:

BasePage.java

public class BasePage {

protected WebDriver driver;

public BasePage(WebDriver driver) {

this.driver = driver;

}

}

BaseTest.java

public class BaseTest {

private WebDriver driver;

private final String chromeDriverPath = "src//main//resources//chromedriver.exe";

private final String firefoxDriverPath = "src//main//resources//geckodriver.exe";

public WebDriver getDriver() {

return driver;

}

@BeforeTest

@Parameters({"browser", "baseURL"})

public void setUp(@Optional String browser, @Optional String baseURL) {

driver = getBrowserType(browser);

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

driver.manage().window().maximize();

driver.navigate().to(baseURL);

}

private WebDriver getBrowserType(String browserType) {

if (driver == null ) {

if (browserType.equalsIgnoreCase("firefox")) {

System.setProperty("webdriver.gecko.driver", firefoxDriverPath);

return new FirefoxDriver();

}

else if (browserType.equalsIgnoreCase("chrome")) {

System.setProperty("webdriver.chrome.driver", chromeDriverPath);

return new ChromeDriver();

}

}

return driver;

}

@AfterTest

public void tearDown() {

if (driver != null)

driver.quit();

}

}

HomePage.java

public class HomePage extends BasePage {

public HomePage(WebDriver driver) {

super(driver);

}

public boolean verifyHomePage() {

return driver.getCurrentUrl().contains("url");

}

}

NavigationMenuComponent.java

public class NavigationMenuComponent extends BasePage{

public NavigationMenuComponent(WebDriver driver) {

super(driver);

}

@FindBy(xpath = "//ul[@class='right']//a[contains(@href, '/about')]")

private WebElement aboutLink;

public void test() {

aboutLink.click();

}

}

HomePageTest.java

public class HomePageTest extends BaseTest {

private HomePage homePage;

@BeforeClass(alwaysRun = true)

public void init() {

homePage = PageFactory.initElements(getDriver(), HomePage.class);

}

@Test(groups = "home-page")

public void verifyFirstPage() {

Assert.assertTrue(homePage.verifyHomePage());

}

}

NavigationMenuTest.java

public class NavigationMenuTest extends BaseTest{

private NavigationMenuComponent navigationMenuComponent;

@BeforeClass

public void init() {

navigationMenuComponent = PageFactory.initElements(getDriver(), NavigationMenuComponent.class);

}

@Test(groups = "about-page")

public void verifyAboutLink() {

navigationMenuComponent.test();

}

}

还有我的testng.xml

这是stacktrace

java.lang.NullPointerException

at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)

at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)

at com.sun.proxy.$Proxy9.click(Unknown Source)

at utils.NavigationMenuComponent.test(NavigationMenuComponent.java:36)

at tests.NavigationMenuTest.verifyAboutLink(NavigationMenuTest.java:25)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)

at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)

at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)

at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)

at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)

at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)

at org.testng.TestRunner.privateRun(TestRunner.java:767)

at org.testng.TestRunner.run(TestRunner.java:617)

at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)

at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)

at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)

at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

我被困在这一个.我应该单独运行它们还是做错了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值