1

Я хотел бы знать, из ниже которого является лучшим вариантом для создания экземпляра PageObject класса (Ex: LoginPage): -Каков лучший способ создать экземпляр объекта PageObject?

1) Создать экземпляр класса Pageobject во всех тестах и ​​шагов (Где требуется)?

LoginPage loginpage = PageFactory.initElements(webDriver, LoginPage.class); 

(или)

2) Создать класс со статическим методом, чтобы вернуть экземпляр для запрошенного PageObject класса. В этом методе проверьте, имеет ли экземпляр значение null перед созданием нового экземпляра для запрошенного класса?

LoginPage loginpage = PageUtil.getPageObject("login"); 

Просьба сообщить.

ответ

3

Существует несколько способов сделать это. Мне нравится создавать BaseClass() и создавать там PageFactory.initElements(driver, this);. См. Мой gist. Кроме того, публичный репозиторий here

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.support.PageFactory; 

/** 
* Created by Saifur on 2/14/2015. 
*/ 
public class BaseClass { 

//global driver instance. 
WebDriver driver; 

//super constructor 
public BaseClass(WebDriver _driver) 
{ 
    //assigning driver instance globally. 
    driver = _driver; 

    /*Instantiating all elements since this is super class 
    and inherited by each and every page object */ 

    PageFactory.initElements(driver, this); 
} 
} 
+0

Спасибо за ответ. Создает ли несколько классов для одного класса PageObject в одном и том же тесте любое влияние на производительность? – user3188928

+0

@ user3188928 Не знаю, о чем я знаю. Но многие люди стремятся создать один класс для одной страницы, что облегчает легкость обслуживания. Но у вас наверняка будет больше одного. Пожалуйста, примите ответ, если это то, что искали – Saifur

+0

Извините, что я набрал неправильно. Я имею в виду создание нескольких классов для одного и того же класса PageObject в том же тесте? – user3188928

Смежные вопросы