页面对象模式(2)
2.1使用LoadableComponent类
继承LoadableComponent类可以在页面加载时判断是否加载了正确页面,只需重写isLoaded和load方法
LoadLoginPage类的源代码:
package cn.pageobject; 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.openqa.selenium.support.ui.LoadableComponent; import org.testng.Assert; public class LoadLoginPage extends LoadableComponent<LoadLoginPage>{ @FindBy(xpath="//input[@placeholder='邮箱帐号或手机号码']") public WebElement userName; @FindBy(xpath="//input[@placeholder='输入密码']") public WebElement password; @FindBy(xpath="//a[@id='dologin']") public WebElement loginButton; private String url ="https://mail.163.com/"; private String title ="网易免费邮"; public WebDriver driver; public LoadLoginPage(){ System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe"); driver = new ChromeDriver(); PageFactory.initElements(driver, this); } //增加了需要覆盖的方法load @Override protected void load(){ this.driver.get(url); this.driver.manage().window().maximize(); } public void quit(){ this.driver.quit(); } public void login(){ driver.switchTo().frame(0); userName.sendKeys("m17805983076"); password.sendKeys("****"); loginButton.click(); } public WebDriver getDriver(){ return driver; } //增加了需要覆盖的方法isLoaded @Override protected void isLoaded() throws Error{ Assert.assertTrue(driver.getTitle().contains(title)); } }
LoadTest163mail类的源代码:
package cn.test; import org.openqa.selenium.WebDriver; import org.testng.Assert; import org.testng.annotations.Test; import cn.pageobject.LoadLoginPage; public class LoadTest163mail { public WebDriver driver; @Test public void testLogin() throws InterruptedException { //生成一个LoadLoginPage对象 LoadLoginPage loadloginpage = new LoadLoginPage(); //继承LoadableComponent类后。只要实现了覆盖的load方法 //即使没有定义get方法的情况下,也可以进行get方法的调用 //get方法会默认调用页面对象类中的load方法 loadloginpage.get(); loadloginpage.login(); Thread.sleep(5000); //断言判断登录成功后跳转页面是否包含未读邮件 Assert.assertTrue(loadloginpage.getDriver().getPageSource().contains("未读邮件")); loadloginpage.quit(); } }