PO是什么:
1、页面对象模型(PO)是一种设计模式,用来管理维护一组web元素的对象库
2、在PO下,应用程序的每一个页面都有一个对应的page class
3、每一个page class维护着该web页的元素集和操作这些元素的方法
其最终目的还是将页面对象(方法和元素)与测试代码分离,提高测试代码的可维护性、可扩展性及可复用性
该模式下要求对常量、变量、类、方法的命名有基本的规约,一目了然
====================================================================================================================================
如下为简单的代码,用于展示该模式
package PageObjects; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import org.testng.Assert; public class LoginPage { //使用FindBy注解,定位到要操作的页面元素, 此处用的xpath,也可以用其他的类型 @FindBy(xpath = "//*[@name='email']") public WebElement userName; @FindBy(xpath = "//*[@name='password']") public WebElement passWord; @FindBy(xpath = "//*[@id ='dologin']") public WebElement loginButton; public String url = "http://mail.126.com"; public String title= "网易免费邮箱"; public WebDriver driver; //构造函数,生成浏览器对象,初始化PageFactory对象 public LoginPage(){ driver = new ChromeDriver(); PageFactory.initElements(driver, this); } public void load(){ this.driver.get(url); } public void quit(){ driver.quit(); } public void login(){ driver.switchTo().frame(driver.findElement(By.xpath("//*[@id='x-URS-iframe']"))); userName.sendKeys("[email protected]"); passWord.sendKeys("alex005x"); loginButton.click(); } public WebDriver getDriver(){ return driver; } public void isLoaded()throws Error{ Assert.assertTrue(driver.getTitle().contains(title)); } }
package TestScripts; import org.testng.Assert; import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import PageObjects.LoginPage; public class Test126mail { private WebDriver driver; /*private String baseUrl="http://mail.126.com"; @BeforeMethod public void beforeMethod(){ driver = new ChromeDriver(); }*/ @Test public void testLogin() throws InterruptedException { LoginPage loginpage = new LoginPage(); loginpage.load(); Thread.sleep(1000); loginpage.login(); Thread.sleep(3000); /* loginpage.userName.sendKeys("davieyang99"); loginpage.passWord.sendKeys("alex005x"); loginpage.loginButton.click(); */ Assert.assertTrue(loginpage.getDriver().getPageSource().contains("邮件")); loginpage.quit(); } /*@AfterMethod public void afterMethod(){ driver.quit(); }*/ }