zoukankan      html  css  js  c++  java
  • 0.1---selenium+java自动化测试进阶01---PageObject设计模式

    一、PageObject设计模式

      1、简介

            PageObject设计模式,又称页面对象模式,是使用Selenium的广大同行最为公认的一种设计模式。在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织。我们通常为每个页面定义一个类,并为每个页面的属性和操作构建模型。采用分层的设计,这样UI界面定位元素属性值的更改不会影响各个层次的代码,减少代码重复,提高测试代码的可读性和可维护性。

      2、分层设计

            PageObject设计模式,主要分为三层,元素层、操作层、业务层。元素层主要对各个页面的元素进行封装,调用findELement()方法,返回WebElement类型的元素。操作层主要封装每个界面元素对应的操作,常见的操作有点击、输入等。业务层是对每个功能对应的业务流程进行实现,主要是将操作层的各个测试操作串接起来,形成一个功能流程。

             除此之外,还需要使用case层封装测试用例,调用业务层的流程方法。base层主要用于封装driver,工具包用于读取元素的定位信息文件。

    二、PageObject实现步骤 

      1、编写自动化测试用例

            在编写用例的过程中应该遵循以下几点原则:

                 (1)一个脚本是一个完整的场景,从用户登录操作到用户退出系统关闭浏览器。

                 (2)一个脚本只验证一个功能点,不要试图用户登录系统后把所有的功能都进行验证再退出系统。

                 (3)尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如:手机号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强(我们尽量遵循用户正常使用原则编写脚本即可)。

                 (4)脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。

                 (5)如果对数据进行了修改,需要对数据进行还原。

                 (6)在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。

           关于用例的存放与维护大概分为两类,一类通过word、excel等文档工具实行编写与维护,如:QC、禅道项目管理等自带的有用例编写与维护工具。因为自动化测试用例对执行的步骤有着更苛刻的要求,所以使用excel描述是一个不错的选择。

          此处利用126邮箱的登录、发邮件、搜索邮件进行用例设计,测试用例分为:动作、数据和验证点几个部分,动作用于描述要如何操作;数据是这一步操作所用到的数据,验证点是这一步操作完成需要验证的信息。

    用例001

    用例id

    testLogin.java

    用户登录与退出

     

        步骤

        动作

         数据

        验证点

         1

    打开登录页

    http://www.126.com

     

         2

    用户登录

    Username  123456

    匹配用户昵称

         3

    用户退出

     

     

    用例002

    用例id

    testSend.java

    发送邮件

     

        步骤

        动作

         数据

        验证点

         1

    打开邮箱

    http://www.126.com

     

         2

    用户登录

    Username  123456

         3

    写信

    只输入收信人、主题和正文发送

    发送成功

         4

    退出

     

     

    用例003

    用例id

    testSearch.java

    搜索邮件

     

        步骤

        动作

         数据

        验证点

         1

    打开邮箱

    http://www.126.com

     

         2

    用户登录

    Username  123456

         3

    搜索邮件

    输入搜索关键字

    显示“搜索结果”

         4

    退出

     

     

      2、编写自动化测试脚本

     在编写脚本的过程中主要涉及的步骤如下:

    (1)编写测试用例

    (2)进行模块化设计:针对部分脚本都需要用到的操作进行模块化设计,公共操作单独写一个方法,在需要的测试脚本中进行调用。

    (3)参数化:将用例脚本中要用到的数据提出来放到文件中或者testNG提供的@DataProvider()定义的对象数组中,保证测试用例与数据脱离,不受测试数据更改的影响。

    (4)编写脚本并运行,输出测试结果。testNG提供测试报告,查看地址在工作空间的text-output文件夹下,我的参考目录如下;

    file:///E:/eclipse/workspace/mypro/test-output/emailable-report.html

    file:///E:/eclipse/workspace/mypro/test-output/Suite1/Test1.html

     

    三、分层结构实现

      1、实现步骤

          (1)搭建maven项目,配置项目需要的包,selenium、log4j、TestNG等

          (2)分层设计,创建不同层次对应的包。base层、元素层、操作层、业务层、用例层、工具包

          (3)封装driver

          (4)封装常用的操作方法。findElement、by、click、sendKeys等

          (5)封装读取文件的方法。

          (6)顺序编写元素层、操作层、业务层、用例层代码

          (7)运行项目生成测试报告

      2、分层设计

         (1)层次划分

                                     

         (2)项目目录结构

                                            

        (3)各层次用途:

    •  1. base 层:封装基础API
    •                      |-----SelectDriver:根据浏览器选择返回对应的driver;
    •                      |-----DriverBase:构造driver ,生成driver对象;并封装WebDriver类型的driver调用的函数(findElement()、get()、设置窗口大小等)
    •                      |-----ByMethon:封装By,使用静态stastic方法,调用时直接使用类名+方法名
    •  2.配置文件loginElement.properities:存储元素位置信息的文件
    •  3.util工具类:封装读取文件操作
    •  4.Page:封装测试功能 页面元素
    •            |----BasePage:封装Webelement类型元素对应的操作(element()、click()、sendKeys());
    •  5.Handle: 操作层,封装功能常用的测试操作  
    •  6.Business: 封装基础业务操作   (编写校验函数,校验测试用例的执行情况)
    •  7.Case:封装每个功能业务的用例
    •              |----CasePage:输入浏览器名称,初始化driver.
  • 相关阅读:
    Disruptor详细介绍之快速入门
    Java魔法类:sun.misc.Unsafe
    Java开源框架推荐
    CAS(Compare and Swap)无锁算法之volatile不能保证原子性而Atomic可以
    数据库乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解
    Linux上查找线程使用的CPU时间最长
    虚拟机内存结构
    插入排序和归并排序(算法学习1)
    POJ-2942:吃糖果
    POJ-4004:数字组合(用位移方法解组合数问题,Java版)
  • 原文地址:https://www.cnblogs.com/geqiandeqingmu/p/12711356.html
Copyright © 2011-2022 走看看