在Selenium页面对象模型测试中重用登录功能

时间:2011-08-21 16:42:10

标签: java selenium-webdriver testng junit4 pageobjects

我正在探索在Web应用程序上使用Selenium 2,该应用程序需要在用户可以使用任何应用程序之前进行身份验证。我正在计划JUnit 4或TestNG(仍在调查哪一个用于Grid 2)。我也可以计划使用jbehave。

有没有人对如何改进以下测试有任何建议,以便我可以在所有测试中使用成功的登录功能?我想避免在测试中重复登录。

public class LoginPageTest {

    private LoginPage page;

    @Before
    public void openTheBrowser() {
        page = PageFactory.initElements(new FirefoxDriver(), LoginPage.class);
        page.open("http://www.site.com/Login");
    }

    @After
    public void closeTheBrowser() {
        page.close();
    }

    @Test
    public void whenTheUserEntersValidCredentialsTheUserIsLoggedIn() {
        assertThat(page.getTitle(), containsString("Login") );
    }   
}

测试已简化,但会返回成功登录的页面对象。

感谢

3 个答案:

答案 0 :(得分:2)

检查案例研究@ http://blog.infostretch.com/?p=806以获得更好的想法。如果您处于初始开发水平,我建议您尝试使用QAF (formerly ISFW)

答案 1 :(得分:1)

您最好的选择可能是将LoginPageTest类用作父类,并从LoginPageTest扩展每个测试类。

这样,每个测试都可以使用父设置和拆除方法登录系统,并进行自己的额外测试。

答案 2 :(得分:1)

创建库并调用测试用例序列以执行一个测试用例/场景 例如:

lib.login();
lib.whenTheUserEntersValidCredentialsTheUserIsLoggedIn();
lib.logout();

这样做可以处理对象创建。对象的解决方案是使用超级eg: super.login()