首页 > 代码库 > Page Object设计模式

Page Object设计模式

 

  1. 什么是框架

 

  1.1 定义:

  框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件(类)及构件(类)实例间交互的方法。

  1.2 为什么要搭建自动化测试框架

    自动化测试的开发,通常是由自动化测试的需求决定的。这个需求主要包括:

    • 自动化测试更便于实施
    • 解决自动化测试脚本本身存在的问题,如异常处理和场景恢复。 
    • 测试易于维护。好的框架,可以减少你在管理维护中所投入的人力物力精力。
    • 可重用性。框架的意义之一就在于可重用吧。所以在框架里,你可以实现一些通用功能,简化脚本开发过程。      
    • 美观易读的测试报告。拿Selenium来说,它产出的测试报告只是基于测试脚本的,并没有那种基于测试集的报告,所以如果你要,测试框架里可以实现。

  2. 什么是设计模式?

  2.1 定义

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

  2.1 使用设计模式

  是为了重用代码、让代码更容易被他人理解、保证代码可靠性。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

  参见网站:http://www.runoob.com/design-pattern/design-pattern-tutorial.html

 

  3. Page Object Model设计模式

  3.1 定义

  对于简单的Selenium自动化测试,我们要做的不过是找到页面元素,并且值传递给这些元素。但是假如有10个脚本同时调用了一个相同的页面元素,当这个元素发生改变,我们需要修改10个脚本。随着脚本数的增加,时间工作复杂度也飞速增长。这个时候我们就可以考虑设计一个类,专门用来页面元素的查找、传递值和修正。这样,当一个页面元素发生改变的时候,只用修改一个类,而不用同时修改10个脚本。 

  Page Object是一种程序设计模式,将面向过程转变为面向对象(页面对象),将测试对象(按钮、输入框、标题等)及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。

  这样,在Selenium测试页面中可以通过调用页面类来获取页面元素,从而巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试页Class中页面的属性即可。可以使代码复用,降低维护成本,提高程序可读性和编写效率。

  3.2 优点

  • 以页面为单位,集中管理元素对象和方法。当页面元素或流程变动时只需要修改相关页面方法即可,不需要修改相应脚本
  • 编写脚本简单,顺着业务逻辑写脚本。page object模式以业务逻辑上的每一步操作作为区分点,页面方法代表了此页面的一个业务操作并严格控制此操作的后续流程
  • 后期维护方便

  3.3 Page Factory

Page Factory是一个很好的设计Object repository的模式,以此来实现Selenium WebDriver中的POM概念。

  4. Page Object的对象

  4.1 Page模式:

技术分享

 

  1. 抽象出一个BasePage基类,包含一个指向selenium.webdriver的属性

2. 每一个webpage都继承BasePage,通过driver来获取本页面的元素,每个页面的操作都抽象为一个个方法

3. TestCase继承unnitest.TestCase类,并依赖相应的Page类来实现相应的test case步骤

4.2 PO对象

  • WebDriver封装
    • 这里是对Selenium的封装,完成封装以后的基本封装代码。
  • Page 基类(BasePage)
    • 设计了一个基本的Page类,以便所有的页面进行继承,该类标明了一个sub page类的基本功能和公共的功能。
  • Sub Pages(s)子类
    • 具体的页面的类,定义了某个具体的页面的功能。
  • Tests 类
    • 这部分描述的是具体的测试用例。
  • 定义Test Suite
    • 多个测试用例添加在一个Test套件里面,一起执行。
  • 定义Test Runner
    • 设计测试的Runner,开启整个测试,并且对测试的结果生成HTML测试报告,并通过邮件发送到指定邮箱。
  • 定义测试的主入口
    • 定义测试的主要入口类,代码的入口

  4.3 WebDriver封装

  1) 定义:封装就是把原始和原生的方法进行再包装。将原始的代码用心的代码包装起来,通过对新代码的调用,来使用原始的代码的过程。

  2) 好处:主要为实现自动化测试框架的:维护成本低、重用性高、安全性高

    对Selenium进行封装的好处主要有如下三个方面:

    • 使用成本低
      1. 不需要要求所有的测试工程师会熟练使用Selenium,而只需要会使用封装以后的代码
      2. 不需要对所有的测试工程师进行完整培训。也避免工作交接的成本。
      3. 测试人员使用统一的代码库
    • 维护成本低
      1. 通过封装,在代码发生大范围变化和迁移的时候,不需要维护所有代码,只需要变更封装的部分即可
      2. 维护代码不需要有大量的工程师,只需要有核心的工程师进行封装的维护即可
    • 代码安全性
      1. 对作为第三方的Selenium进行封装,是代码安全的基础。
      2. 对于任何的代码的安全隐患,必须由封装来解决,使得风险可控。
      3. 使用者并不知道封装内部的代码结构。

  4.2 BasePage

 



 

 

 

 

Page Object设计模式