我想知道我应该在哪里实例化页面对象?这是我的项目层次结构:
页面:包含带有构造函数的所有页面对象,例如
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。然后一个运行我所有测试用例的类。但是我使用黄瓜,所以这个基类只运行黄瓜方案。