文档章节

PO模式你会吗?自动化测试PO模式分层如何实现?

o
 osc_s4e6jr85
发布于 07/05 07:55
字数 948
阅读 63
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

一、什么是PO模式

全称:page object model  简称:POM/PO

PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性!

 

 

 

主要分三层:

1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。

2.PO层:元素定位、获得元素对象,页面动作

3.测试用例层:业务逻辑,数据驱动!

三者的关系:PO层继承继承层,测试用例层调用PO层!

二、什么是自动化测试框架

 

 

说到自动化框架,我相信很多人应该都听过这个词,但是不知其到底是个什么东西,为什么要用自动化框架。有很多人堆自动化框架都是懵懵懂懂,就跟谈恋爱一样,朦胧美!

一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本的,

一个好的自动化测试框架可以减少自动化测试中脚本管理和维护当中的人力物力和财力。

其实自动化框架的一个最大的意义在于可重用性。因为在框架里,你可以实现很多的通用功能来简化整个脚本的开发过程。并且生成美观的测试报告。

三、非PO模式和PO模式优缺点对比

自动化软件测试交流!!!群:642830685,领取最新软件测试资料大厂面试和Python自动化学习资料!一起学习交流

 非PO模式面向过程的线性脚本POM把页面元素定位和业务操作流程分开。实现松耦合。复用性差UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离

维护性差PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。

四、如何从0到1搭建PO模型

 

 非PO模式举个栗子:有如下百度搜索脚本:

 

 

如何把上述栗子改成PO模式呢?

1、基础层BasePage

 

 2、PO层:封装百度页面元素定位,元素对象以及页面操作

 

 

3、测试用例层:业务逻辑和数据驱动

 

 

从上面的PO案例:让我们更加了解清晰PO的优点在于:

1.POM把页面元素定位和业务操作流程分开。实现松耦合。

2.UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离

3.PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。


五、自动化测试框架和PO的关系

自动化框架=po+各种封装(日志处理封装,全局配置文件的封装,数据库连接的封装,excel操作封装,数据驱动封装等)

其实想要胜任UI自动化测试岗位还需要掌握以下内容:

1.python或java

2.selenium的API

3.unittest/pytest单元测试框架

4.htmltestrunner/allure测试报告

5.数据驱动dtt(excel,yaml,mysql)或pytest中的fixtrue

6.关键字驱动:公共类,方法封装,随机数,数据库连接,全局登录

7.全局配置文件处理

8.日志处理

9.断言

10.第三方库

11.git和github或码云集成开发!

12.jenkins持续集成

六、总结

如果您觉得对您有帮助,请点赞,收藏,分享三连!您的支持是笔者最大的动力!






o
粉丝 0
博文 68
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.4K
6
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
3.9K
3
SQLServer实现split分割字符串到列

网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题。 先贴上某大牛写的s...

cwalet
2014/05/21
9.6K
0
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16

没有更多内容

加载失败,请刷新页面

加载更多

Python 计算 0.1+0.2≠0.3? 6 张图搞清楚原理!

点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! “ 作者:武沛齐 出处: http://www.cnblogs.com/wupeiqi/ 本文版权归作者和博客园共有 为啥会有上述图片的现象呢?其实是由于...

zeroing1
07/28
0
0
转向边缘计算? 考虑一下

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 数据为王,特别是在当前数据驱动业务的时代,数据思维和分析能力是决定未来成功的重...

osc_lmp76vjx
1分钟前
0
0
工信部为“新基建”安全加把“锁”

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 8月3日,工业和信息化部发布通知,要求开展2020年网络安全技术应用试点示范工作。按...

osc_oz0d1seh
2分钟前
0
0
今天吃粽子了吗?🤔祝大家端午安康~

本文分享自微信公众号 - 电子狂人(DZKR666)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

狂人V
06/25
0
0
如何计算C#中某人的年龄? - How do I calculate someone's age in C#?

问题: 给定一个代表一个人生日的DateTime ,我如何计算他们的年龄(以岁为单位)? 解决方案: 参考一: https://stackoom.com/question/9/如何计算C-中某人的年龄 参考二: https://oldbug...

技术盛宴
3分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部