页面对象应在哪里实例化



我想知道我应该在哪里实例化页面对象?这是我的项目层次结构:

页面:包含带有构造函数的所有页面对象,例如

public LoginPage extends BasePage
 {
   super(driver);
   PageFactory.initElements(driver, this);
}

我的基础epage包含所有常见的方法,例如表处理,从Webtable中收集数据等。

我有一个基础,其中包含所有页面对象实例化,我的测试是扩展的。

LoginPage loginPage = new LoginPage(driver);

我还有导航,数据库连接,自定义等待等的助手(非静态(类。

有什么最佳实践吗?大山是实例化的合适地方吗?

谢谢!

i在测试代码中实例化页面对象,而不是基类,因为场景需要。例如,

@Test(dataProvider = PROVIDER)
public void testLogin(WebDriver driver, Info info) {
  Login login = new Login(driver);
  assertTrue(login.isDisplayed());
  login.enterCredentials(info.getUser(), info.getPw());
  Welcome welcome = new Welcome(driver);
  assertTrue(welcome.isDisplayed());
}

这只是使用页面对象的一种方法。

请注意不要写太多的"助手"类,或太深的继承层次结构。

我以下面的方式进行。我不确定它有多好。评论和反馈欢迎。

a。我使用一个包含实例化页面对象的摘要页面,并且还具有所有对象级别包装器方法,例如clickbutton((,sendkeys((,sendkeys((等。页面对象实例化通过constructor <发生>

public AbstractPage(WebDriver driverWeb) {
  this.driverWeb = driverWeb;
  PageFactory.initElements(driverWeb, this);
}

b。然后,我有所有的页面类,可以扩展此摘要页面 -

public LoginCanvas(WebDriver driverWeb) {
  super(driverWeb);
}

c。然后一个运行我所有测试用例的类。但是我使用黄瓜,所以这个基类只运行黄瓜方案。

最新更新