1.Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性.
PageObject 设计模式:是将某个页面的所有 "元素(包含控件)属性" 及 "元素操作" 封装在 1 个类 (Class) 里面.
2. 以我们公司的登录页面为例讲解 pom 模式:
pom 的模式就是测试代码和元素定位的分离,保证在元素定位发生改变的时候,不会再去更改测试代码,实现测试代码和页面元素的分离.
3. 元素定位代码:
4. 测试代码:
package com.rrx.test;
import org.openqa.selenium.webElement;
import org.openqa.selenium.support.FindBy;
public class TestLoginPage {
// 登录名
@FindBy(xpath=".//*[@id='username']")
WebElement userName;
// 密码
@FindBy(xpath=".//*[@id='password']")
WebElement password;
// 登录按钮
@FindBy(xpath=".//*[@id='form']/div[4]/button")
WebElement login;
public void login(String user,String pass){
System.out.println(user);
userName.sendKeys(user);
password.sendKeys(pass);
login.click();
}
}
package com.rrx.test;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
import com.rrx.framework.BorwserEngin;
import com.rrx.framework.Logger;
public class NewTest {@Test public void f() throws IOException,
InterruptedException {
BorwserEngin borwser = new BorwserEngin();
Reporter.log("我在打印日志");
WebDriver driver = borwser.getDriver();
TestLoginPage page = PageFactory.initElements(driver, TestLoginPage.class);
page.login("hexin001", "Test123456");
Reporter.log("我退出浏览器了");
Thread.sleep(3000);
Logger.getLogger().info(" 退出 ");
// borwser.tearDown();
}
}
来源: http://www.bubuko.com/infodetail-2453861.html