python selenium po模式_基于Python Selenium Unittest PO设计模式详解
本文章会讲述以下几个内容:
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设计模式详解相关推荐
- python硬件交互_对Python的交互模式和直接运行.py文件的区别详解
对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...
- mysql查询语句详解_基于mysql查询语句的使用详解
1> 查询数据表除了前三条以外的数据. 起初我想到的是这条语句 SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ...
- python 无头浏览器多线程_基于Python, Selenium, Phantomjs无头浏览器访问页面
引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...
- python人脸识别库_基于Python的face_recognition库实现人脸识别
Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...
- python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...
- autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...
- python音频实时频谱分析_基于python的音频设计及频谱分析
74 Internet Technology 互联网 + 技术 一.引言 WAV 是 Microsoft 开发的一种声音文件格式,虽然它支持多种压缩格式,但是它通常被用来保存未压缩的声音数据(PCM ...
- python多叉树遍历_基于Python的多叉树遍历算法
[ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...
- python电影推荐算法_基于Python的电影推荐算法
原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...
- python气象绘图速成_基于Python气象数据处理与可视化分析
基于 Python 气象数据处理与可视化分析 张鑫 ; 曹蕾 ; 韩基良 [期刊名称] <气象灾害防御> [年 ( 卷 ), 期] 2020(027)001 [摘要] 全国综合气象信息共享 ...
最新文章
- 1106 Lowest Price in Supply Chain
- Mask R-CNN 源代码终上线,Facebook 开源目标检测平台—Detectron
- 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开
- 不忘初心,砥砺前行——写在数据院成立四周年之际
- LeetCode 24 Swap Nodes in Pairs(交换序列中的结点)
- Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”
- 推荐CUDA程序优化的15个策略
- 请求数据分析 xpath语法 与lxml库
- oracle的parse是什么意思,Oracle性能测量体系(Parse Time)
- json符号解释大全_水电图纸图例大全,电气、弱电、给排水常用图例
- mybatis 原理_深入理解MyBatis原理 MyBatis数据源与连接池
- 从Http的连接到WebSocket
- 845B - Luba And The Ticket
- 关于Resnet50和ResNeXt50的参数量的简单计算(只考虑卷积层和全连接层)
- Endianness
- C语言——指针函数和函数指针(回调函数)
- 双容水箱液位串级控制系统的设计
- Win11删除磁盘分区的方法
- 多家波卡生态项目招聘开发者,高薪职位等你来 Pick
- 计算机可靠度计算公式,可靠性计算公式大全
热门文章
- TsingHua:FPT: Improving Prompt Tuning Efficiency via Progressive Training
- J2EE常见英文词汇
- makefile双冒号规则
- oracle9 undo表空间释放,undo表空间使用率过高,且迟迟不释放问题
- 计算机java项目(毕设课设) 之 含文档+PPT+源码等]CRM客户关系管理系统
- ar、ranlib、nm命令详解
- Ubuntu VNC 安装/使用/故障解决 看这一篇就够了
- windows杀死指定端口
- 研发黄河千年清一回超高压龙卷风水盾构大国重器
- drop table 与trua_姆爷的新专到底Cue了多少人?致敬的同时也diss了很多rapper!