У меня проблемы с 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();
Это не работает и приводит к исключению java.lang.NullPointerException в строке, помеченной "*" (строка, обращающаяся к WebElement).
Мне нравится использовать статические методы, подобные этим, в тесте, поскольку я не вижу в этом проблемы, и это делает код еще проще для чтения. И я делал это раньше, в C # / VS, но по какой-то причине я здесь упускаю что-то важное.