Java 带有TestNG的页面对象模式

Java 带有TestNG的页面对象模式,java,selenium,selenium-webdriver,testng,pageobjects,Java,Selenium,Selenium Webdriver,Testng,Pageobjects,我不熟悉java Selenium WebDriver编程和自动化 有人能举例说明页面对象模式吗。我认为学习它的最好地方,举例来说就是在 首先理解概念-每个页面都由一个类来表示,然后在一个你已经熟悉的简单网站上进行实验 例如,选择一个简单的网站并编写一些测试来验证登录过程。 通过在页面对象设计模式中指定的类中对参与的web页面(例如LoginPage、HomePage)进行建模,并在测试方法中使用这些对象 当您对它感到满意时,您可以向前迈出一步,对于复杂的web页面,为单个页面上的不同部分建模一

我不熟悉java Selenium WebDriver编程和自动化


有人能举例说明页面对象模式吗。

我认为学习它的最好地方,举例来说就是在

首先理解概念-每个页面都由一个类来表示,然后在一个你已经熟悉的简单网站上进行实验

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


当您对它感到满意时,您可以向前迈出一步,对于复杂的web页面,为单个页面上的不同部分建模一个单独的类,以实现更好的可重用性和更少的维护开销。

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

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();
    // ...
}
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();
}
如果必须为登录页面创建另一个测试,您将重新定义WebElements用户名、密码和登录,您可以使用PageObject来表示登录页面,如下所示:

@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();
    // ...
}
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");
    // ...
}
无论如何,我建议你看一下的官方文件,也阅读一下

希望这有帮助;)