哪个是创建 PageObject 实例的更好方法?

Which is the better way to create instance of PageObject?

我想从下面知道哪个是创建 PageObject class(例如:LoginPage)实例的更好选择:-

1) 在所有测试和步骤中创建一个 Pageobject class 的实例(任何需要的地方)?

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

(或)

2) 使用静态方法创建一个 class 到 return 请求的 PageObject class 的实例。在这个方法中,在为请求的class创建新实例之前检查实例是否为null?

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

请指教

有多种方法可以做到这一点。我喜欢创建一个 BaseClass() 并在那里实例化 PageFactory.initElements(driver, this);。看我的 gist. Also, the public repository 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);
 }
}