本文章会讲述以下几个内容:

1、什么是PO设计模式(Page Object Model)

2、为什么要使用PO设计模式

3、使用PO设计模式要点

4、PO设计模式实例

1、什么是PO设计模式 (Page Object Model)

一种在测试自动化中变得流行的设计模式,使得自动化测试脚本的减少代码重复、更易读、减少维护成本。

一般PO设计模式有三层

第一层:

对Selenium 进行二次封装,定义一个所有页面都继承的 BasePage ,

封装 Selenium 基本方法 例如:元素定位,元素等待,导航页面 ,

不需要全部封装,用到多少方法就封装多少方法。

第二层:

页面元素进行分离,每个元素只定位一次,隔离定位,如果页面改变,只需要改变相应的元素定位;

业务逻辑分离 或 操作元素动作分离

第三层:

使用单元测试框架对业务逻辑进行测试

2、为什么要使用PO设计模式

页面频繁变化,(页面html结构等变化)导致页面UI元素频繁变动,元素定位改变

传统线性自动化(面向过程开发),用例中需要反复的定位同一个元素

每当页面发生变化的时候,需要在用例中寻找变动的部分,工作量大,容易产生遗漏,不容易维护

3、使用PO设计模式要点

不要在page页面对象外做元素定位

不在page页面对象里面写断言,除非是页面是否成功加载断言

需要多少个元素就定位多少个,不需要对整个页面的元素进行定位

当你的用例设计页面跳转时,例如登陆操作,登陆完成后跳转首页,当页面发生“跳转” ,封装的业务逻辑需要返回(return)对应的页面对象的实例

BasePage封装Selenium 基础方法,不需要全部封装,用到多少方法就封装多少方法

4、 PO设计模式实例

用例:

标题:登陆成功

前置条件:打开TAPD登录页 https://www.tapd.cn/cloud_logins/login

操作步骤:

1. 输入用户名(手机或邮箱):XXXXXX

2. 输入密码:XXXXXX

3. 点击登陆按钮

预期结果:

3. 页面跳转至“工作台-我的待办”

项目目录:

base_page.py

login_page.py

worktable_to_do_page.py

test_login.py

Page object model 官方文档

文末,感谢乙醇老师指导

原文出处:https://www.cnblogs.com/snailrunning/p/10163159.html

python selenium po模式_基于Python Selenium Unittest PO设计模式详解相关推荐

  1. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

  2. mysql查询语句详解_基于mysql查询语句的使用详解

    1> 查询数据表除了前三条以外的数据. 起初我想到的是这条语句 SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ...

  3. python 无头浏览器多线程_基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  4. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  5. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  6. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  7. python音频实时频谱分析_基于python的音频设计及频谱分析

    74 Internet Technology 互联网 + 技术 一.引言 WAV 是 Microsoft 开发的一种声音文件格式,虽然它支持多种压缩格式,但是它通常被用来保存未压缩的声音数据(PCM ...

  8. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  9. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  10. python气象绘图速成_基于Python气象数据处理与可视化分析

    基于 Python 气象数据处理与可视化分析 张鑫 ; 曹蕾 ; 韩基良 [期刊名称] <气象灾害防御> [年 ( 卷 ), 期] 2020(027)001 [摘要] 全国综合气象信息共享 ...

最新文章

  1. 1106 Lowest Price in Supply Chain
  2. Mask R-CNN 源代码终上线,Facebook 开源目标检测平台—Detectron
  3. 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开
  4. 不忘初心,砥砺前行——写在数据院成立四周年之际
  5. LeetCode 24 Swap Nodes in Pairs(交换序列中的结点)
  6. Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”
  7. 推荐CUDA程序优化的15个策略
  8. 请求数据分析 xpath语法 与lxml库
  9. oracle的parse是什么意思,Oracle性能测量体系(Parse Time)
  10. json符号解释大全_水电图纸图例大全,电气、弱电、给排水常用图例
  11. mybatis 原理_深入理解MyBatis原理 MyBatis数据源与连接池
  12. 从Http的连接到WebSocket
  13. 845B - Luba And The Ticket
  14. 关于Resnet50和ResNeXt50的参数量的简单计算(只考虑卷积层和全连接层)
  15. Endianness
  16. C语言——指针函数和函数指针(回调函数)
  17. 双容水箱液位串级控制系统的设计
  18. Win11删除磁盘分区的方法
  19. 多家波卡生态项目招聘开发者,高薪职位等你来 Pick
  20. 计算机可靠度计算公式,可靠性计算公式大全

热门文章

  1. TsingHua:FPT: Improving Prompt Tuning Efficiency via Progressive Training
  2. J2EE常见英文词汇
  3. makefile双冒号规则
  4. oracle9 undo表空间释放,undo表空间使用率过高,且迟迟不释放问题
  5. 计算机java项目(毕设课设) 之 含文档+PPT+源码等]CRM客户关系管理系统
  6. ar、ranlib、nm命令详解
  7. Ubuntu VNC 安装/使用/故障解决 看这一篇就够了
  8. windows杀死指定端口
  9. 研发黄河千年清一回超高压龙卷风水盾构大国重器
  10. drop table 与trua_姆爷的新专到底Cue了多少人?致敬的同时也diss了很多rapper!