Функция элементов Pagefactory init объявляется один раз в коде для оптимизации кода - PullRequest
0 голосов
/ 10 октября 2019

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

Я попытался сделать ссылку переменной, например, для "manorgpom ort = PageFactory.initElements (getdriver (), manorgpom"). класс);"ort быть статическим, но это дает исключение нулевого указателя. Я инициализировал их вне моих тестовых случаев и сделал эталонную переменную статической, но безуспешно.

    @Test(priority=3)
public void orgact() throws Exception {
    manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);
    getdriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    ort.actorg();
    Thread.sleep(5000);
}

@Test(priority=4)
public void orgadd() throws Exception{
    manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);
    getdriver().manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    ort.addorg();
    Thread.sleep(10000);
}

Если вы видите выше, мне нужно инициализировать веб-элементы каждый раз, когда я пишу тестовый пример. Каждый раз мне нужно упомянуть «manorgpom ort = PageFactory.initElements (getdriver (), manorgpom.class);». Я хочу оптимизировать это.

Это фрагмент класса manageorgpom.

    public class manorgpom extends Basetest{
@FindBy(xpath="//*[@href='/organization']")
WebElement orglink;

@FindBy(xpath="//*[@class='anticon anticon-filter']")
WebElement filter;

@FindBy(xpath="//*[@placeholder='e.g. High School USA']")
WebElement filternametxt;

@FindBy(xpath="//*[text()='Activate']")
WebElement activatelink;

@FindBy(xpath="//*[@placeholder='e.g. Johnny']")
WebElement contactfirstname;

Когда я сделал ссылку на переменную ort статической, я получаю исключение java.lang.nullPointerException при каждом запуске пакета. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 15 октября 2019

Это потому, что ваш webDriver создается каждый раз. Вам нужно сделать его одноразовым и использовать только один экземпляр webDriver. открытый класс driverSingleton {частный статический конечный экземпляр webDriver = new ChromeDriver ();// просто например // приватный конструктор, чтобы клиентские приложения не использовали конструктор приватный EagerInitializedSingleton () {} public static driverSingleton getInstance () {return instance;}}

...