硒结构模式java

时间:2014-01-15 17:14:22

标签: java design-patterns selenium junit automation

我对Selenium很陌生,但具有良好的编码经验

我正致力于非常复杂的Web应用程序的自动化。 对于我的测试,我使用的是junit框架。

我不希望我的类扩展到巨大的大小,所以这就是我每页划分自动化的方式。对于前者我有主页。从中我可以进入设置,仪表板和许多其他页面。所以与homePage相关的所有修改/功能都保留在主页上。然后对于每个下一页我有另一个类,我正在创建webdriver并将其分配给上一页webdriver。因此,每个类都反映了我可以在该特定页面上实现的功能。

所以让我说我有第4级页面,我将有一个第4级的课程,在创建它将创建第3级页面,第3级将创建第2级第一级如此,在某些时候我会得到到第一个登录页面。基本上我有一个树,我的登录页面在它的头部。

它非常好用,直到junit,我都没有问题。 我喜欢在我的@After课程中关闭浏览器的想法,而且我有不同的页面类。我怎么能一起弯曲它,无论我在我的测试中创建和使用什么类的页面,我的后方法是关闭那个浏览器?

由于

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是在类中使用After方法来扩展所有测试。例如:

Class A extends T
Class B extends T

Class T {
    WebDriver driver;

    @After
    public void tearDown() {
        driver.quit();
    }
}

现在,当A#testMethod1完成后,它将从继承的tearDown()方法执行@After

此外,就您的页面而言,请执行@CeilingGecko并仅使用1个webdriver实例。你可以这样做:

Class A extends T {
    LoginPage loginPage = new LoginPage(driver);

    @Test
    public void testMethod1() {
        loginPage.login("username", "password");
    }
}

Class LoginPage {
    WebDriver driver;
    public LoginPage(WebDriver driver) {
        this.driver = driver;
    }

    public void login(String user, String password) {
        // driver.doStuff()
    }
}

答案 1 :(得分:0)

查找Pagefactory。我有一个相关的帖子here,其中有一个例子。