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

时间: 2024-08-03 03:12:11

Page Object设计模式的相关文章

Page Object设计模式实践

Page Object模式是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织. Page Object模式,创建一个对象来对应页面的一个应用.故我们可以为每个页面定义一个类,并为每个页面的属性和操作构建模型.体现在对界面交互细节的封装,测试在更上层使用页面对象,在底层的属性或者操作的更改不会中断测试.减少代码重复,提高测试代码的可读性和可维护性. 下面将以登录qq邮箱为例,通过Page Object设计模式来实现.

Page Object 设计模式介绍

Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案例的可读性. 1.认识 Paget Object Page Object 设计模式的优点如下: 减少代码的重复: 提高测试用例的可读性: 提高测试用例的可维护性,特别是针对 UI 频繁变化的项目: Paget Object 使用注意: public方法代表Page提供的功能 尽量不要暴露Page的内

python-selenium Page Object设计模式

Page Object是一种程序设计模式,将面向过程转变为面向对象(页面对象),将测试对象及单个的测试步骤封装在每个Page对象中,以page为单位进行管理.可以使代码复用,降低维护成本,提高程序可读性和编写效率. #用page object思想实现百度首页的搜索和登陆功能 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time class BaiduPage():   

python+ selenium&APPium page Object 设计模式

题记: 之前公司项目比较稳定, 在进行了系统测试,想用自动化测试进行冒烟测试,或者对主要功能进行测试, 因此用到了PO模式 因此做个记录: Page Object Page Object模式是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织. Page Object模式,创建一个对象来对应页面的一个应用.故我们可以为每个页面定义一个类,并为每个页面的属性和操作构建模型.体现在对界面交互细节的封装,测试在更上层使用页

Page Object 设计模式-PO

1.传统测试用例实现的弊端: 易读性差 复用性差 可维护性差 扩展性差 2.PO 设计模式图: 3.Page Object 的核心要素: 抽象封装一个 BasePage 基类,基类应该拥有一个只想 webdriver 实例的属性: 每一个 page 都继承 BasePage,通过 driver 来管理(自己)page 中的元素(对象), 将 page 中的操作封装成一个个的方法 TestCase 继承 unitest.Testcase 类,并且依赖 page 类,从而实现相应的 teststep

selenium +python之Page Obiect设计模式

PageObject是selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现对界面交互细节的封装,这样可以使测试案例更关注于业务而非界面细节,从而提高测试案例的可读性. 1.认识PageObject PageObject设计模式的优点如下: *减少代码的重复 *提高测试用例的可读性 *提高测试用例的可维护性,特别针对UI频繁变动的项目. 当为web页面编写测试是,需要操作该web页面上的元素.然而,如果在测试代码中直接操作HTML元素,代码是及其脆弱的,因为ui的变动性会很大.我们

Selenium_Page Object设计模式

Page Object 介绍 Page Object设计模式的优点如下: 减少代码的重复 提高测试用例的可读性 提高测试用例的可维护性,特别是针对UI频繁变化的项目 当Web页面编写测试时,需要操作该Web页面上的元素,如果在测试代码中直接操作HTML元素,那么代码比较脆弱,因为UI频繁变动.可用到page对象封装成一个HTML页面,通过提供的API来操作页面元素. Page Object 实例 下面以登录163邮箱为例实现: 1 #!/usr/bin/env python 2 # _*_ co

Page Object页面设计模式核心要点

  Page Object,页面对象.一种设计模式,实施selenium的最佳实践,体现了web应用与页面显示之间的关系.为什么需要Page Object?测试代码维护的需要:减少代码的编码量,减少代码的维护量,清晰而明确的业务测试流程. Page Obje实现了测试代码的分层:页面元素.元素操作 和 页面业务的分离. 1.基础类 全局公共配置方法2.页面类 页面业务+元素集合3.用例层 关注数据和业务流程4.增加测试用例1(增加商品). 测试用例2(删除商品) 5.代码解耦 用例1和用例2公共

python+selenium自动化软件测试(第7章):Page Object模式

什么是Page ObjectModel模式Page Objects是selenium的一种测试设计模式,主要将每个页面看作是一个class.class的内容主要包括属性和方法,属性不难理解,就是这个页面中的元素对象,比如输入用户名的输入框,输入登陆密码的输入框,登陆按钮,这个页面的url等,而方法,主要是指这个页面可以提供的具体功能.为什么选择POM?我们先看一段简单的代码如下: from selenium import webdriver import time driver = webdri