页面对象模式

Posted z-zzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面对象模式相关的知识,希望对你有一定的参考价值。

页面对象模式介绍:

  页面对象模式是目前自动化测试领域普遍使用的设计模式之一,此模式可以大大提高测试代码的复用率,提高测试脚本的编写效率和维护效率

1.1使用PageFactory

测试网址:

https://mail.163.com/

1.1.1使用PageFactory类给测试类提供待操作的页面元素

(1)新建两个包分别存放对象类、测试类

LoginPage类的源代码

package cn.pageobject;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPage {
    //使用FindBy注解,定位到需要操作的页面元素
    @FindBy(xpath="//input[@placeholder=‘邮箱帐号或手机号码‘]")
    public WebElement username;
    @FindBy(xpath="//input[@placeholder=‘输入密码‘]")
    public WebElement password;
    @FindBy(xpath="//a[@id=‘dologin‘]")
    public WebElement loginButton;
    public LoginPage(WebDriver driver){
        PageFactory.initElements(driver, this);
    }
}

Test163mail的源代码:

package cn.test;

import org.testng.annotations.Test;

import cn.pageobject.LoginPage;

import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;

public class Test163mail {
    WebDriver driver;
    String url ="https://mail.163.com/";
  @Test
  public void testLogin() throws InterruptedException {
      //生成一个LoginPage对象实例
      LoginPage loginpage = new LoginPage(driver);
      //进入登录框所在的frame,0代表第一个frame
      driver.switchTo().frame(0);
      //直接使用页面对象输入用户名
      loginpage.username.sendKeys("m17805983076");
      //直接使用页面对象输入密码
      loginpage.password.sendKeys("****");
      //直接使用页面对象单击登录
      loginpage.loginButton.click();
      //等待5秒
      Thread.sleep(5000);
      //断言登录后页面是否包含“未读邮件”关键字
      Assert.assertTrue(driver.getPageSource().contains("未读邮件"));
  }
  @BeforeMethod
  public void beforeMethod() {
      System.setProperty("webdriver.chrome.driver", "D:\WebDriver\chromedriver_win32\chromedriver.exe");
      driver = new ChromeDriver();
      driver.manage().window().maximize();
      driver.get(url);
  }

  @AfterMethod
  public void afterMethod() {
      driver.quit();
  }

}

 

以上是关于页面对象模式的主要内容,如果未能解决你的问题,请参考以下文章

Vue 创建多页面应用模式

如何运用领域驱动设计 - 值对象

页面对象模式

有没有办法关闭代码片段中的命名建议?

asp.net页面实用代码片段

用于从 cloudkit 检索单列的代码模式/片段