1. 程式人生 > >頁面對象模式(2)

頁面對象模式(2)

read assert 情況 itl 對象 test code sendkeys over

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("1314520a"); 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();
  }
}

頁面對象模式(2)