页面对象模式(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();
  }
}

 

posted @ 2019-03-21 10:44  心生意动  阅读(193)  评论(0编辑  收藏  举报