使用TestNG的页面对象模式

时间:2014-02-23 12:01:02

标签: java selenium selenium-webdriver testng pageobjects

我是Java Selenium WebDriver编程和自动化的新手。

任何人都可以用示例解释页面对象模式。

2 个答案:

答案 0 :(得分:2)

PageObject模式将Web应用程序的屏幕(页面)表示为一系列对象(java类)。这些对象称为“PageObjects”

PageObject不需要代表整个页面。它可能表示在网站或网页中多次出现的部分,例如网站导航。基本原则是,您的测试套件中只有一个地方可以了解特定(部分)页面的HTML结构。

例如,不要使用这样的测试方法:

@Test()
public void test() {
    driver.get("http://www.mysite.com");
    WebElement username = driver.findElement(By.id("user"));
    username.sendKeys("admin");
    WebElement password = driver.findElement(By.id("pass"));
    password.sendKeys("admin");
    WebElement login = driver.findElement(By.id("login"));
    login.click();
    // ...
}

如果您必须为登录页面创建另一个测试,您将重新定义WebElements用户名,密码和登录,您可以使用PageObject来表示登录页面,如下所示:

public class LoginPage {
public HomePage loginAs(String username, String password) {
    WebElement username = driver.findElement(By.id("user"));
    username.sendKeys("admin");
    WebElement password = driver.findElement(By.id("pass"));
    password.sendKeys("admin");
    WebElement login = driver.findElement(By.id("login"));
    login.click();
    return new HomePage();
}

然后,从你的测试:

@Test()
public void test() {
    driver.get("http://www.mysite.com");
    LoginPage loginPage = new LoginPage();
    HomePage homePage = loginPage.loginAs("admin", "admin");
    // ...
}

无论如何,我建议您查看PageObjects的官方文档,并阅读PageFactory

希望这会有所帮助;)

答案 1 :(得分:1)

我认为学习它的最佳位置,例如Selenium Project page in Google Code

首先理解这个概念 - 每个页面都由一个类表示,并在您熟悉的简单网站上进行实验。

例如,选择一个简单的网站并编写一些测试来验证登录过程。 通过在页面对象设计模式中指定的类中对参与的网页(例如,LoginPage,HomePage)进行建模来实现,并在测试方法中使用这些对象。

当您对此感到满意时,您可以向前迈进一步,对于复杂的网页,可以在单个页面上为不同的部分建立单独的类,以便更好地重复使用并减少维护开销。