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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql去重查询groupby「建议收藏」

    mysql去重查询groupby「建议收藏」一、Dubbo是什么?Dubbo是阿里巴巴开源的基于Java的高性能RPC(一种远程调用)分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。二、为什么要用Dubbo?因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了Netty、Zookeeper,保证了高性能高可用性。1、使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场

    2022年10月30日
  • java BigDecimal类型 比较大小

    java BigDecimal类型 比较大小一般我们进行类型比较有.equals()、==、.compareTo()但是当比较bigdecimal类型时最好使用.compareTo()来比较大小BigDecimala=BigDecimal.ZERO;BigDecimalb=BigDecimal.valueOf(0.000);BigDecimalc=BigDecimal.valueOf(0.0);a.equals(b)的结果会是fal…

  • docker 实战—部署tomcat\weblogic集群 (二)

    docker 实战—部署tomcat\weblogic集群 (二)

  • 基于pytorch卷积人脸表情识别–毕业设计「建议收藏」

    基于卷积神经网络的人脸表情识别前言毕业设计内容介绍卷积神经网络的设计卷积网络的模型卷积池化过程详细说明第一层卷积池化过程第二层卷积池化过程第三层卷积池化过程全连接层过程模型的训练过程卷积与池化原理模型如何训练模型的评估指标训练结果分析通过训练曲线分析通过混淆矩阵分析效果通过摄像头识别表情设计流程效果演示部分代码展示总结前言这篇文章记录一下我本科毕业设计的内容。我的课题是人脸表情识别,本来最开始按照历届学长的传统是采用MATLAB用传统的机器学习方法来实现分类的。但是鉴于我以前接触过一点点深度学习的内容,

  • vscode 前端最佳插件配置

    vscode最佳配置配置说明详解vscode配置内容在最后,已附上editor是针对vscode的风格设置例如tabSize:一个tab等于2个空格,行高为24pxworkbench是针对vscode的主题设置例如iconTheme(图标风格):使用插件vscode-great-icons(需搜索安装)例如color…

  • 银河麒麟安装qt开发环境_优麒麟怎么样

    银河麒麟安装qt开发环境_优麒麟怎么样1.如果你对中标麒麟系统安装有疑问,请阅读上一篇文章:《中标麒麟/NeoKylinU盘安装系统》。2.进入系统打开终端,以root模式操作。<1>yuminstallgstream*libXext-devellibX11-devel<2>ln-s/usr/lib64/libXrender.so.1.3.0/usr/lib64/libXrend…

发表回复

您的电子邮箱地址不会被公开。

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