页面对象模式(1)

页面对象模式介绍:

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

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

}

原文地址:https://www.cnblogs.com/z-zzz/p/10565923.html

时间: 2024-10-07 19:41:44

页面对象模式(1)的相关文章

构建基于WinRT的WP8.1 App 01:页面导航及页面缓存模式

本篇博文主要阐述基于Windows Runtime的Windows Phone 应用页面间导航相关知识,主要分为以下几个方面: Window.Frame和Page概览 页面间实现跳转 处理物理后退键 页面的缓存 Window.Frame和Page概览 基于WinRT的Windows Phone 8.1,每个App只有一个Window. 每个Window都有自己的Frame和导航栈, 以及自己的Page. Window中有一个Frame,并且100%撑满可视区域,通常Frame也是100%撑满Wi

空对象模式(Null Object Pattern)

空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系.(消除如if(Object == null) 这样的检查null实例代码) 例子: public abstract class Duck { public String name; public abstract void getName(); } public class ConcreteDuck extends Duck { public ConcreteDuck(String name) { this.na

C# 设计模式之空对象模式

最近看了不少的书籍和视频等相关资料,决定自己边学习边写一下个人对设计模式的理解,如果有不对的请大家多多指正. 今天先说说我个人觉得最简单的设计模式 -- [空对象模式] 空对象模式可以减少客户端对对象判断是否为空的重复操作,也可以减少异常发生的情况[如果客户端调用程序忘记了检查对象是否为空,而直接访问对象中的数据,则有可能会报出异常,影响程序运行]. 废话不说了,先上我写的代码,下面是未运用空对象模式之前的示例代码: 要返回的实体代码,Person.cs: namespace NullObjec

空对象模式

在学习Head First设计模式中的“命令模式”过程中,偶然发现可以用在coding过程中的小技巧.赶紧记录,以备后用! 具体可以称之为“空对象”模式,而且专门用来处理对象为null的情形. 比如以下情形: Command接口: public interface Command { public void execute(); } 测试代码: Command[] commands = new Command[10]; // initial commands[0] and the others

角色对象模式

意图 单个对象透过不同的角色对象来满足不同客户的不同需求.每一个角色对象针对不同的客户内容来扮演其角色.对象能够动态的管理其角色集合.角色作为独立的对象是的不同的内容能够简单的被分离开来,系统间的配置也变得容易. 译注:为了行文的流畅性及内容意思的准确性,尽量贴近原文使用英文单词标记特定内容, 如Customer表示客户,Client表示客户端,Component表示组件等.因为有各种图例说明,所以在图例说明时,使用原题中的英文单词对应图中内容.有时也中英文交叉使用.因为网页显示的问题,中文黑体

【设计模式】空对象模式

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查.Null 对象不是检查空值,而是反应一个不做任何动作的关系.这样的 Null 对象也可以在数据不可用的时候提供默认的行为. 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方. 实现 我们将创建一个定义操作(在这里,是客户的名称)的 AbstractCustomer 抽象类,和扩展了 Abs

selenium测试框架篇,页面对象和元素对象的管理

前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让整个测试体系: 更容易维护 大大增加代码重用 增加测试系统的稳定性 这里先了解一下我所说的对象库: 所谓的页面对象,是指每一个真是的页面是一个对象. 比如zhihu的登陆页面是一个页面对象,http://www.zhihu.com/#signin 这个页面对象主要包含一个输入邮箱的输入框(一个元素对

被遗忘的设计模式——空对象模式(Null Object Pattern)

GoF(四人帮)那本<设计模式 可复用面向对象软件的基础>可谓是设计模式方面的经典之作,其中介绍的23种设计模式, 也可谓是经典中的经典.但是,设计模式的种类绝不仅仅是这23种,除此之外还有很多巧妙可爱的设计模式值得我们学习.这些 被遗忘的设计模式,也可以堪称经典之作.今天我们来一起学习被遗忘的设计模式--空对象模式(Null Object Pattern). 一起看看这个模式会带给我们怎样的惊喜? 一.Pattern name Provide an object as a surrogate

【设计模式】数据访问对象模式

数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作. 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口.该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者