通過繼承LoadableComponent類,測試程式可以判斷瀏覽器是否載入了正確的頁面,只需要重寫isLoaded和load二個方法,此方法有助於頁面物件的頁面訪問操作更加穩定
1.LoginPage類
package com.gloryroad.pageobjects; 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; import java.util.concurrent.TimeUnit;
//LoadableComponent
public class LoginPage extends LoadableComponent<LoginPage> {
private WebDriver driver;
private String login_url = "http://ip地址/路徑";
@FindBy(xpath = "//input[@id='login-email-address']")
public WebElement email;
@FindBy(xpath = "//input[@id='login-password']")
public WebElement password;
@FindBy(xpath = "//input[@id='Iajax-login-submit']")
public WebElement submitbutton;
@FindBy(className ="dialog-cancel")
public WebElement quxiao;
//建構函式,生成瀏覽器物件,初始化PageFactory物件
public LoginPage(){
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
PageFactory.initElements(driver,this);
}
//增加了需要覆蓋的方法load
@Override
protected void load() {
this.driver.get(login_url);
}
//增加了需要覆蓋的方法isLoaded
@Override
protected void isLoaded() throws Error {
//斷言訪問後的介面Title是否包含"信貸"關鍵字
//判斷瀏覽器是否載入了正確的網址
Assert.assertTrue(driver.getTitle().contains("信貸"));
} //關閉瀏覽器的方法
public void quit(){
driver.quit();
}
//登入操作的方法
public void login() throws InterruptedException {
email.sendKeys("蔡徐坤坤");
password.sendKeys("qw123456");
submitbutton.click();
quxiao.click();
Thread.sleep(3000);
}
public WebDriver getDriver(){
return driver;
}
}
2.Testlogin類
package com.gloryroad.tests; import com.gloryroad.pageobjects.LoginPage;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; public class Testfanwe {
private LoginPage loginPage = new LoginPage();
private WebDriver driver;
@BeforeMethod
public void getConf(){
driver = loginPage.getDriver();
}
@Test
public void test_f_login() throws InterruptedException {
loginPage.get();
loginPage.login();
//判斷登入後的頁面是否"蔡徐坤坤"關鍵字,驗證是否成功登入
Assert.assertTrue(driver.getPageSource().contains("蔡徐坤坤"));
} @AfterMethod
public void quit(){
loginPage.quit();
}
}