Инициализация PageFactory только один раз в отдельном Java-классе - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь уменьшить многословность в моем сценарии, следуя практике кодирования «Не повторяйся» (СУХОЙ). Я наткнулся на вызов. Я реализовал базовый тест с использованием селена и огурца с Pagefactory. У меня есть объекты моей страницы в одном отдельном классе BasePage и инициализированная фабрика страниц в другом классе Test. Инициализация происходит внутри каждого метода, и тест выполняется в соответствии с ожиданиями.

public class Test {
private static WebDriver driver;

public void navigateToUrl(String url) {
//Launch browser
}

public void firstLogin(String username, String Password) {
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation
basePage.usernameField.click();
basePage.passwordField.sendKeys("pwd");
}

public void secondLogin()  {
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation
basePage.myIdField.click();
basePage.myPasswordField.click();    
}

Я пытаюсь улучшить сценарий. Я хочу инициализировать pagefactory только один раз, возможно, на уровне класса, а не инициализировать внутри каждого метода, поэтому я удалил инициализацию из всех методов и объявил ее один раз на уровне класса:

public class Test {
private static WebDriver driver;
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation

Я получил исключение nullpointerException.

Я тоже попробовал это, поместив инициализацию в метод установки:

public class Test {
private static WebDriver driver;
private static BasePage basePage;

@BeforeMethod
public void setUp() {
basePage = PageFactory.initElements(driver, BasePage.class);
}

Тем не менее, это привело к Nullpointer

Мой BasePage заголовок выглядит так:

public class BasePage {
private final WebDriver driver;

public BasePage(WebDriver driver) {
   this.driver = driver;
  }

Я не только инициализируюсь несколько раз, я также использую переменную basePage в каждой строке в методах firstLogin и secondLogin. Есть ли способ обойти это, я не знаю, но было бы полезно, если кто-то может посоветовать или дать вклад. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...