其他分享
首页 > 其他分享> > 如何使用继承使用Page Object模式设计Selenium 2测试

如何使用继承使用Page Object模式设计Selenium 2测试

作者:互联网

我们现在正在使用Selenium 2(Webdriver)和TestNG编写一个新的测试套件.我们的测试使用Page Object模式,我们对目前看来的方式非常满意.但是,我们的测试遇到了设计问题,我们似乎无法找到一个好的解决方案.
让我给你举个例子.这是我们的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中)中,然后由子测试用例访问.然而,这看起来非常难看并且可能导致滥用该变量.

对于解决此设计问题的此模式或某种模式,是否有更好的解决方案?

解决方法:

我们使用依赖注入和Guice-berry的Guice来解决这个问题.页面对象被注入到测试方法中,WebDriver被注入到页面对象中.

作为权衡,我们没有在页面对象之间使用所有这些漂亮的小链接.

但是当涉及并行测试执行时,静态和单例是痛苦的,所以应该避免它们.

标签:java,selenium-webdriver,selenium,testng,pageobjects
来源: https://codeday.me/bug/20190626/1293068.html