我想知道我应该在哪里实例化我的Page对象? 这是我的项目层次结构:
Pages:包含带有构造函数的所有页面对象,例如
public LoginPage extends BasePage
{
super(driver);
PageFactory.initElements(driver, this);
}
我的BasePage包含所有常用方法,例如表处理,从webtable收集数据等。
我有一个baseTest,它包含所有的Page Objects实例,我的测试扩展了这个类。
LoginPage loginPage = new LoginPage(driver);
我有辅助(非静态)类以及导航,数据库连接,自定义等待等。
任何最佳做法? Basetest是实例化它们的适当位置吗?
谢谢!
答案 0 :(得分:1)
我在测试代码中实例化页面对象,但不是场景所需的基类。如,
@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());
}
这只是使用页面对象的一种方法。
小心不要写太多"帮助"类,或继承层次结构太深。
答案 1 :(得分:0)
我是按照下面给出的方式做的。我不确定它有多好。评论和反馈欢迎。
a。我使用的AbstractPage类包含实例化页面对象,还包含所有对象级别的包装器方法,如clickButton(),sendKeys()等。页面对象实例化通过构造函数< / p>
public AbstractPage(WebDriver driverWeb) {
this.driverWeb = driverWeb;
PageFactory.initElements(driverWeb, this);
}
b。然后我的所有页面类都扩展了这个AbstractPage -
public LoginCanvas(WebDriver driverWeb) {
super(driverWeb);
}
c。然后是一个运行我所有测试用例的类。但我使用黄瓜,所以这个基类只运行黄瓜情景。