【发布时间】:2020-06-13 16:31:49
【问题描述】:
webelements 没有被初始化。
代码如下:
HomePage.java
package crossword.pages;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import base.TestBase;
public class HomePage extends TestBase{
@FindBy(xpath = "//title")
WebElement homepageTitle;
@FindBy(xpath = "//div[@class=\"top-links\"]//a[text()='Login']")
WebElement loginLink;
public HomePage() {
PageFactory.initElements(driver, this);
}
public String gethomepagetitle() {
return homepageTitle.getAttribute("title");
}
public void clickonLogin() {
loginLink.click();
}
}
HomePageTest.java
package testcases;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import base.TestBase;
import crossword.pages.HomePage;
public class HomePageTest extends TestBase {
public HomePageTest() {
super();
}
HomePage homepage = new HomePage();
@BeforeMethod
public void setUp() {
TestBase.initialization();
}
@Test
public void homepagetitletest() {
System.out.print(homepage);
String actualTitle = homepage.gethomepagetitle();
String expectedTitle = "Books - Crossword - Crossword";
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test
public void clickonloginlink() {
homepage.clickonLogin();
}
@AfterMethod
public void exit() {
teardown();
}
}
我得到的错误是:
失败:点击登录链接 java.lang.NullPointerException 在 org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69) 在 org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38) 在 com.sun.proxy.$Proxy9.click(未知来源) 在填字游戏.pages.HomePage.clickonLogin(HomePage.java:25) 在 testcases.HomePageTest.clickonloginlink(HomePageTest.java:35) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:135) 在 org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598) 在 org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
【问题讨论】:
标签: selenium-webdriver page-factory