selenium的PO模式

selenium的PO模式PageObject模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class(封装在一个class类中),其中包含页面中需要测试的所有元素(按钮,输入框,标题等)的属性和操作,这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试页Class中页面的属…

大家好,又见面了,我是你们的朋友全栈君。

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class(封装在一个class类中),其中包含页面中需要测试的所有元素(按钮,输入框,标题等)的属性和操作,这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试页Class中页面的属性即可。

强调测试、逻辑、数据和驱动相互分离。

目的: 测试代码与被测页面对象代码分离,后期如果有页面元素发生了更改,只需要修改相应页面对象的代码(即对应Class文件),而不需要修改测试代码

它的好处如下:

  • 集中管理元素对象
  • 集中管理一个page内的公共方法
  • 后期维护方便

 

一、测试用例:使用单元测试框架

二、业务模块:使用 Page Object 设计模式,设计 Common 类

三、封装驱动:

  • 封装单一的工具,或者多个工具都可以
  • 封装 WebDriver(Selenium)成为 BoxDriver,支持Web UI 自动化测试
  • 封装其他特定工具 成为 DbDriver,支持数据库测试
  • 封装接口测试工具 成为 ServiceDriver,支持集成测试,接口测试
  • 封装 Appium工具 成为 AppDriver,支持移动APP UI自动化测试

PO设计

WebDriver封装

  • 这里是对Selenium的封装,完成封装以后的基本封装代码。
  • 新建 base 包
  • 新建 BoxDriver.java 放置 Selenium类的封装

Page 基类

 

  • 设计了一个基本的Page类,以便所有的页面进行继承,该类标明了一个sub page类的基本功能和公共的功能。

  • 全局变量: this.baseDriver,让所有的子类都使用的。

  • 构造方法:
    • 传递 driver的构造方法

      public BasePage(BoxDriver driver) {
            this.baseDriver = driver;
      }
    • 默认的构造方法,无参数的构造方法

      public BasePage() {
      }

    • 私有的常量:存放元素的定位符

      private String START_BUTTON_SELECTOR = "s,#start > div";
      private final String EXIT_MENU_TEXT = "l,%s";
      

    • 成员方法:

      • 每个子类都需要的系统功能:

        • open

          public void open(String url) throws InterruptedException {
              this.baseDriver.navigate(url);
              Thread.sleep(2000);
          }
          

      • 所有子类(页面)都具有的业务功能

        • selectApp
        • logout

  • Sub Pages(s)子类

    • 具体的页面的类,定义了某个具体的页面的功能

    • 必须继承基类

      public class AdminPage extends BasePage {
      }
      

    • 创建构造方法,带driver 参数

      public AdminPage(BoxDriver driver) {
         super(driver);
      }
      

    • 特定页面的业务

    • 使用基类的 this.baseDriver

  • 作者:立师兄Linty
    链接:https://www.jianshu.com/p/b164dd76502d
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • Tests 类

    • 这部分描述的是具体的测试用例。

    • 声明全局变量

      private BoxDriver baseDriver = null;
      private String baseUrl = null;
      private LoginPage loginPage = null;
      private AdminPage adminPage = null;
      

    • 调用各种页面(pages)

      1. 实例化Page

        this.loginPage = new LoginPage(this.baseDriver);
        this.adminPage = new AdminPage(this.baseDriver);
        

      2. 使用page的对象,调用成员方法

        loginPage.open(this.baseUrl);   
        loginPage.changeLanguage(lang);
        loginPage.login("admin", "123456", true);
        loginPage.selectApp(AppType.Admin);
        adminPage.clickAddMemberButton();
        adminPage.addMemberData(member);

https://www.jianshu.com/p/b164dd76502d

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144060.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker 镜像启动命令_宿主机ping不通docker

    docker 镜像启动命令_宿主机ping不通dockerdockerrun:创建一个新的容器并运行一个命令语法dockerrun[OPTIONS]IMAGE[COMMAND][ARG…]OPTIONS说明: -astdin:指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项; -d:后台运行容器,并返回容器ID; -i:以交互模式运行容器,通常与-t同时使用; -P:随机端口映射,容器内部端口随机映射到主机的端口 -p:指定端口映射,格式为:主…

    2022年9月23日
    5
  • R语言入门mac——RStudio安装➕R包安装【附安装链接】[通俗易懂]

    R语言入门mac——RStudio安装➕R包安装【附安装链接】[通俗易懂]R语言入门mac——安装【附安装链接】这里写目录标题R语言入门mac——安装【附安装链接】一、总体安装步骤1安装R2下载RStudio二、R包安装一、总体安装步骤1安装RRStudio需要R3.0.1+下载链接:https://cran.rstudio.com/2下载RStudio下载链接:https://rstudio.com/products/rstudio/download/二、R包安装下面展示r包安装代码rm(list=ls())options()$repos

    2022年6月27日
    166
  • 五大主流浏览器及四大内核1

    五大主流浏览器及四大内核1

    2021年10月23日
    44
  • echarts关系图谱初级实现

    echarts关系图谱初级实现echarts关系图谱初级实现具体实现的效果如图(主要是使用了echarts的力引导图),主要是为了展现人与人还有人与物之间的关系。如果你的项目只是用于展示的话,那么使用这个demo应该就能帮助到你。demo地址:…

    2022年6月26日
    59
  • JVM成神之路-类加载机制-双亲委派,破坏双亲委派

    概述概念虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析统称为连接上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须严…

    2022年4月16日
    36
  • 一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。

    一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。

    2022年4月20日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号