整理一下python selenium自动化测试实践中使用较多的po设计模式。

为什么要用PO

基于python selenium2开始开始ui自动化测试脚本的编写不是多么艰巨的任务。只需要定位到元素,执行对应元素的操作即可。

下面我们看一下这个简单的脚本实现百度搜索。

从上述代码来看,我们所能做的就是元素的定位,然后进行键盘输入或鼠标动作。就这个小程序而已,维护起来看起来是很容易的。

但随着时间的迁移,测试套件将持续的增长。脚本也将变的越来越多。如果我们需要维护10个页面,100个页面,甚至1000个呢?

那么页面元素的任何改变都会让我们的脚本维护变得繁琐复杂,而且变得耗时易出错。

那怎么解决呢?ui自动化中,常用的一种方式,引入Page Object(PO):页面对象模式来解决,po能让我们的测试代码变得可读

性更好,可维护性高,复用性高。

PO是什么:

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

2、在PO下,应用程序的每一个页面都有一个对应的page class

3、每一个page class维护着该web页的元素集和操作这些元素的方法

4、page class中的方法命名最好根据对应的业务场景进行,例如通常登录后我们需要等待几秒钟,

我们可以这样命名该方法:waitingForLoginSuccess()。

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

PO的优势

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

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

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

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

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

PO实现示例

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

#basePage.py代码如下

#searchPage.py代码如下

#testSearchPage.py代码如下

python po设计模式_Python Selenium设计模式 - PO设计模式相关推荐

  1. python selenium po模式_Python+Selenium+Unittest实现PO模式web自动化框架

    1)效率高 :PO模式的逻辑层方法有具体定义,元素发生变化修改逻辑层,业务层不变.这样看来结构简单清晰,舒服更符合人类习惯, 普通方式就是继续堆case. 2) 复用多收益大: 同样这里如果逻辑复用越 ...

  2. java web典型模块大全_python+selenium基于po模式的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  3. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  4. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

  5. python页面切换_Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  6. python火狐配置文件_Python+Selenium中级篇之4-封装一个自己的类-浏览器引擎类/Python读取配置文件内容...

    封装一个自己的类-浏览器引擎类 前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动 ...

  7. python sendkeys用法_Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  8. python自动化简历_python+selenium实现简历自动刷新的示例代码

    本文用到的文件的下载地址 百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ 提取码: e6at 1 安装Python 和 selenium ...

  9. python自动化测试登录_Python selenium自动化测试框架入门实战--登录测试案例

    本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁. 本文应用到POM模型.selenium.unittest框架.configparser配置文件. ...

最新文章

  1. 默认标题栏字体_不喜欢Windows10上的默认系统字体,可以这样更改
  2. java emailbuilder 样式_Java8通用Builder了解一下
  3. 爬虫、框架scrapy
  4. yjv是电缆还是电线_VV是什么电缆?与YJV电缆有何区别?
  5. libreoffice_如何更改您在LibreOffice中可以撤消的操作数
  6. suse查看mysql内存使用情况_MySQL 慢查询日志(Slow Query Log)
  7. 论高性能机房标识标签管理办法一现状篇
  8. Java IO实战操作(二)
  9. 单片机是什么?51单片机和stm32有什么区别?
  10. 在使用btest中的demo中遇到 multiple definition of 的问题!
  11. 信息提取 Information Extraction
  12. 箱形图适用于哪种数据_数据可视化分析中图表选择
  13. vs2015启动无法工作,问题事件名称: APPCRASH,故障模块名称: KERNELBASE.dll
  14. 用python模拟登录12306
  15. IP协议首部详细分析
  16. Vmware WorkStation(中文名“威睿工作站”) 网卡图解
  17. babylonjs代码解读
  18. 一文详解:Quick BI、帆软Fine BI等主流BI软件,各有哪些特点
  19. 如何启用计算机安全模式,怎样让电脑进入安全模式,如何让电脑进入安全模式未开机...
  20. 在 Linux 中安装 Thunderbird

热门文章

  1. EBS业务学习之应收管理
  2. 【IEnumerable】扩展方法的使用 C#
  3. 如何使用单线程处理高并发
  4. hadoop fs 基本命令
  5. 学习,一定是脱“贫”致富的捷径
  6. linux通过I2C地址查看设备名称
  7. android 4.4 下拉菜单 透明,4.2状态栏,下拉,全局透明教程
  8. 即将放弃python的app_python放弃之 模块和包
  9. 统计app用户在线时长_「云工作普及系列」2.如何实时统计工作时长,提高工作效率
  10. 如何 给给软件开发 添加 代理_敏捷开发是如何被跑偏的