Selenium系列(二十) - PageObject模式的详细介绍

如果你还想从头学起Selenium,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

前言

  • 在UI自动化测试中,PO是目前最为主流,也是公认最佳的设计模式
  • UI自动化测试最初是通过关键字驱动+数据驱动的形式来实现,然后升级到PO模式

什么是关键字驱动

  • 简单而言,就是将Selenium常用功能进行二次封装
  • 譬如:把查找元素、点击、输入等原生方法进行封装
  • 而最大的问题点在于:不管封装之后的关键字方法是否用得上,都会将Selenium的原生方法封装,但业务测试中是永远用不上的

关键字驱动 vs RF

  • 可以把关键字驱动对比用RF(Robot Framework)做的自动化测试,在RF GUI界面调用关键字,并传入参数即可完成一系列的元素操作;
  • 而我们在Pycharm上完成关键字驱动也是相同道理,封装好Selenium常用方法,然后去调用关键字,不同页面传入不同的参数即可完成一系列的元素操作

什么是数据驱动

将代码和数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实现整个自动化的流程

什么是关键字驱动+数据驱动

  • 读取数据,将固定格式的数据进行拼接【读取数据】
  • 拼接后的内容作为关键字所需要的参数,进行传入【传入数据】
  • 调用关键字,将执行结果和预期结果进行对比,从而获取单条测试用例执行是否通过的结果【执行关键字,断言结果】

关键字驱动+数据驱动是一种设计模式哦! 

什么是PO模式

  • PO模式是page object model的缩写,是一种设计模式
  • 把待测页面当成一个页面对象,一般包含了元素对象的定位和元素操作方法,将页面对象和真实的网站页面一 一映射起来
  • 比如一个登录页面,使用PO模式后,操作的步骤如下:
    1. 会先创建一个class,该class就是登录页面对象类
    2. 类的属性:用户名输入框,密码输入框,登录按钮的webElenent
    3. 类的方法:各种元素操作的方法
    4. 方法里面会调用对象库层的二次封装Selenium的方法
    5. 测试层从页面操作层调用操作方法,写成测试用例,这种模式可以做到定位元素与测试用例分离
  • 所以这样的设计理念就是PO模式

PO模式的分层

PO模式可以把一个页面一般分为三层

对象库层:二次封装Selenium的方法

页面操作层(也称:逻辑层):封装页面的元素对象和元素操作

测试层(也称:业务层):多个页面操作完成一个业务测试,一般结合单元测试框架(unittest、pytest)来测试

当然也有分四层的

对象库层:二次封装Selenium的方法

页面层:封装页面的元素对象

操作层:封装页面的元素操作

测试层:多个页面操作完成一个业务测试

PO模式和关键字驱动+数据驱动有什么区别?(PO模式的原理)

  • 升级到PO模式之后,首先将Selenium常用的功能,结合实际业务需要进行二次封装;封装的内容是完全贴合实际业务来实现的【封装Selenium】
  • 将元素对象和元素操作进行整合【元素对象整合】
  • 将对象库和测试代码分离,实现数据与代码分离【数据与代码分离】

PO模式给代码带来的优势

  • 代码冗余明显降低:二次封装Selenium方法和提取公共方法,提高代码复用性
  • 代码的阅读性明显提升:因为三层分级,将不同内容进行不同的封装,整体代码阅读性提升
  • 代码维护性明显提升:UI测试中,页面若经常变动,代码的维护量随之增多;因为三层分级,我们只需要修改页面对象的代码,如元素对象或者操作对象的方法,不用修改测试用例的代码,也不影响测试用例的正常执行
  • 降低代码耦合性

原文地址:https://www.cnblogs.com/poloyy/p/12633726.html

时间: 2024-11-05 18:35:55

Selenium系列(二十) - PageObject模式的详细介绍的相关文章

Java设计模式菜鸟系列(二十)解释器模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40019829 解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值.一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. 一.uml建模: 二.代码实现 /** * 解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值. * * 一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄. * * 示例:

Cocos2d-x 3.x 图形学渲染系列二十八

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 昨天,刚从丈母娘家回来,继续博客的更新,接着Cocos2d-x 3.x图形学渲染系列二十七继续系列二十八的编写. 接下来读取FBX模型文件信息,首先要做的是把读取的模型信息进行归类并

VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别.ziw

2017年1月10日, 星期二 VMware网络连接模式-桥接.NAT以及仅主机模式的详细介绍和区别 在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥接模式.NAT模式.仅主机模式.自定义网络连接模式.那么这几种网络连接模式都各自有什么主要用途,它们之间又有哪些区别呢? 磨刀不误砍柴工,为了更好地使用虚拟机,了解这几种连接模式的主要用途以及它们之

C/S模式与B/S模式的详细介绍

网络程序开发的两种计算模式--C/S模式与B/S模式.两种各有千秋,用于不同场合. C/S适用于专人使用,安全性要求较高的系统: B/S适用于交互性比较频繁的场合,容易被人们所接受,倍受用户和软件开发者的青睐: B/S模式下的动态网页技术主要有CGI,ASP,PHP,JSP等, 其中JSP基于java技术,跨平台性好,"一次编写,到处运行",并且编写容易,程序员可以快速上手:其重用性好,连接数据库使用JDBC驱动,支持大多数的数据库系统,目前已成为开发B/S系统的主流技术. 详细介绍:

Java设计模式菜鸟系列(二十二)中介者模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改. 一.uml建模: 二.代码实现 /** * 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话, * * 不利于功能的拓展和维护,因为只要修改一个对象,其它

ES系列二十、kibana基本用法

一. 定义索引模式匹配 1.前缀模糊匹配,一个模式匹配多个索引 每一个数据集导入到Elasticsearch后会有一个索引匹配模式,在上段内容莎士比亚数据集有一个索引名称为shakespeare,账户数据集的索引名称为bank.一个索引匹配模式就是一个字符串包含可选的通配符,它能匹配多个索引.比如,在常用的日志案例中,一个典型的索引名称包含MM-DD-YYYY格式的日期,因此一个5月的索引匹配模式可能是这样:logstash-2015.05*. 2.选择时间字段 Logstash数据集包含时间系

Selenium系列(十四) - Web UI 自动化基础实战(1)

如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式 目的是为了掌握所学的Selenium基础 实战题目 访问:https://m.weibo.cn/ 点击:大家都在搜 点击:微博热搜榜

Selenium系列(十五) - Web UI 自动化基础实战(2)

如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式 目的是为了掌握所学的Selenium基础 实战题目 访问:https://www.toutiao.com/ 获取到下图所有黑框里的内容

openstack运维实战系列(二十)之neutron创建网络并指定vlan号码

1. 背景说明   neutron在openstack中负责instance的网络,如虚拟机内部网络,虚拟机外部网络等,和实体网络相类似,openstack中的网络也存在路由器router,交换机switch,网络network,子网subnet,端口port等概念,这些功能都有neutron来完成,neutron由有个不同的插件plugins组成,如二层插件neutron-openvswitch-agent,三层插件neutron-l3-agent,动态地址分配neutron-dhcp-age