【发布时间】:2012-01-12 18:42:43
【问题描述】:
我们现在正在使用 Selenium 2 (Webdriver) 和 TestNG 编写一个新的测试套件。我们的测试使用页面对象模式,我们对目前的情况非常满意。但是,我们在测试中遇到了设计问题,我们似乎无法找到一个好的解决方案。 让我举一个例子。这是我们的 LoginTestCase:
public class LoginTestCase extends MyTestCase {
@BeforeTest
public void login() {
HomePage homepage = PageFactory.initElements(getDriver(), HomePage.class);
LoginPage loginPage = homepage.login();
DashboardPage dashboardPage = loginPage.loginUser("username", "password");
}
}
我们希望扩展需要用户从该测试登录的测试。 理想情况下,我们可以这样写:
public class DashboardTestCase extends LoginTestCase {
@Test
public void testDashboard(DashboardPage dashboardPage) {
...
}
}
此时用户位于DashboardPage,唯一需要的是在LoginTestCase 中创建的页面对象。
我知道显而易见的解决方案是将该对象存储在一个变量中(在LoginTestCase 中),然后子测试用例将可以访问该变量。然而,这看起来非常难看,并且可能导致该变量的滥用。
对于这个或解决这个设计问题的某种模式有更好的解决方案吗?
【问题讨论】:
标签: java selenium selenium-webdriver testng pageobjects