我是Java Selenium WebDriver编程和自动化的新手。
任何人都可以用示例解释页面对象模式。
答案 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)进行建模来实现,并在测试方法中使用这些对象。
当您对此感到满意时,您可以向前迈进一步,对于复杂的网页,可以在单个页面上为不同的部分建立单独的类,以便更好地重复使用并减少维护开销。