什么是PO?

1.页面对象模型(PO)是一种设计模式,用来管理维护一组页面元素的对象库.

2.在PO下,应用程序的每一个页面都有一个对应的Page类.

3.每一个Page类维护着该页面的元素集和操作这些元素的方法.

PO的好处?

1.代码可读性强

2.可维护性高

3.复用性高

怎么设计PO?

设计的原则
1.抽象每一个页面

2.页面中元素不暴露,仅报错操作元素的方法

3.页面不应该有繁琐的继承关系

4.页面中不是所有元素都需要涉及到,核型业务元素做建模使用

5.把页面划分功能模块,在Page中实现这些功能方法

下面我们看下PO的代码目录组织示例:

PO的优势
1、PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰。

2、页面对象与用例分离,使得我们更好的复用对象。

3、可复用的页面方法代码会变得更加优化

4、更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。例如我们要回到首页,

 方法命名为:gotoHomePage(),通过方法名即可清晰的知道具体的功能实现。

PO实现示例
下面看下使用PO设计模式构建的百度搜索用例,先看下代码组织结构如下:

#basePage.py代码如下

#searchPage.py代码如下

#testSearchPage.py代码如下

自动化测试的PO模式相关推荐

  1. Appium自动化测试(五)——PO模式(一):短信案例

    PO模式:Page Object,PO模式是自动化测试项目开发实践的最佳设计模式之一. 核心思想:通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素位置发生变化,只需要调整页面封装的代码,提高 ...

  2. (五)Selenium自动化测试实战—PO模式

    上一篇:(四)selenium自动化测试之上传本地文件_要开朗的spookypop的博客-CSDN博客_selenium上传本地文件 先看下测试代码运行效果: 在做自动化测试时,测试框架设计很重要,测 ...

  3. python的web自动化框架实例_Selenium基于Python web自动化测试框架 -- PO

    关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...

  4. 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...

    一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...

  5. 自动化测试po模式是什么?自动化测试po分层如何实现?(附详细源码)

    一.什么是PO模式 全称:page object model  简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePag ...

  6. 自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码

    目录:导读 一.什么是PO模式 二.什么是自动化测试框架 三.非PO模式和PO模式优缺点对比 四.如何从0到1搭建PO模型 五.自动化测试框架和PO的关系 六.总结 一.什么是PO模式 全称:page ...

  7. App-UI自动化测试-PO模式/组件化封装

    1.PO模式 具体什么是PO模式就不用详细介绍了,web自动化测试已经介绍过了,详细内容可参考此篇文章中的4.3.2UI自动化测试介绍_晒不黑的黑煤球的博客-CSDN博客_ui自动化测试 我这里新建了 ...

  8. UI 自动化测试框架:PO 模式+数据驱动

    1. PO 设计模式简介 什么是 PO 模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,并以页面为单位来写测试用例,实现页面对象和测 ...

  9. Appium PO模式UI自动化测试框架——设计与实践

    阅读目录 1. 目的 2. 意义 3. 设计理念 4. PO模式 5. 框架设计 5.1 目录结构 5.2 实现步骤 5.3 具体实现 5.3.1 base部分 5.3.2 po部分 5.3.3 te ...

最新文章

  1. 实战篇:一个核心系统 3 万多行代码的重构之旅
  2. oracle sql 数据库之间导入数据
  3. 谈谈spark.sql.shuffle.partitions和 spark.default.parallelism 的区别及spark并行度的理解
  4. 上传文件到服务器端后进一步推送到sftp服务器
  5. 相同java代码,编译生成class文件不同的原因-JDK版本不同(大版本相同,小版本不同)
  6. 为啥不用ActiveRecord
  7. (Zotero)开源的文献管理器 真香
  8. MAgent安装及初步试验
  9. 【java】的传值方式
  10. 数据结构——二叉链表
  11. weblogic 12c 安装与下载
  12. HTTPS 免费证书,免费 ssl 证书,FreeSSL.org 申请多种免费证书
  13. NLP的巨人肩膀[转]
  14. python求最小公倍数_Python 最小公倍数算法
  15. html肤质测试,皮肤致敏试验
  16. Large scale evolutionary optimization using cooperative coevolution
  17. 微信小程序自定义tabBar使用
  18. 质量管理与过程改进-质量管理方案
  19. BUUCTF 你尽然赶我走
  20. linux下jdk的安装与配置jdk-6u45-linux-i586.bin

热门文章

  1. 南开大学计算机学院申请考核,南开大学2019年计算机学院“申请考核制”博士研究生招生选拔实施细则...
  2. php全局变量和类配合使用全解析
  3. file 文件与 base64 互相转化
  4. Eclipse项目上有红色的叉或感叹号
  5. 0xc0000001
  6. 【正点原子FPGA连载】第八章LED灯闪烁实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
  7. cocoscreatorbox2d密度,摩擦系数,弹性值
  8. SAP系统实际应用中的十大难题
  9. 计算机时代影视人类学发展,试论影视人类学de历史、现状及其理论框架.pdf
  10. Ubuntu 18.04 安装 MotionPro