【发布时间】:2019-05-08 13:35:42
【问题描述】:
当我尝试在页面对象中使用静态方法时,我遇到了 NullPointerExceptions 问题。如果我使用非静态方法,它工作正常。
非静态版本:
public class ComplaintPage {
private ExtendedWebDriver driver;
@FindBy(css = "[data-selector=date-received-complaint]")
public WebElement dateComplaintReceoved;
public ComplaintPage() {
driver = Browser.extendedDriver();
PageFactory.initElements(driver, this);
}
public void setComplaintDate() {
dateComplaintReceoved.sendKeys(LocalDate.now().toString());
}
}
Calling code:
ComplaintPage complaintPage = new ComplaintPage;
complaintPage.setComplaintDate();
这很好用。日期字段已设置。
静态版
public class ComplaintPage {
private static ExtendedWebDriver driver;
@FindBy(css = "[data-selector=date-received-complaint]")
public static WebElement dateComplaintReceoved;
public ComplaintPage() {
driver = Browser.extendedDriver();
PageFactory.initElements(driver, this);
}
public void static setComplaintDate() {
* dateComplaintReceoved.sendKeys(LocalDate.now().toString());
}
}
Calling code:
ComplaintPage.setComplaintDate();
这不起作用,并在标有“*”的行(访问 WebElement 的行)上导致 java.lang.NullPointerException。
我有点喜欢在测试中使用这样的静态方法,因为我并没有真正看到它有什么问题,而且它使代码更易于阅读。我以前在 C#/VS 中做过,但由于某种原因,我在这里遗漏了一些重要的东西。
【问题讨论】:
标签: java selenium selenium-webdriver selenium-chromedriver static-methods