目录:导读

一、什么是PO模式

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

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

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

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

六、总结


一、什么是PO模式

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

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

主要分三层:

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

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

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

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

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

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

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

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

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

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

笔者来自公众号:软测之家     更多技术干货,视频资料请加:软件测试技术群:695458161
非PO模式 PO模式
面向过程的线性脚本 POM把页面元素定位和业务操作流程分开。实现松耦合。
复用性差 UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离
维护性差 PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。

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

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

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass Test(unittest.TestCase):def test01(self):# 打开浏览器driver = webdriver.Chrome()# 加载百度首页driver.get('http://www.baidu.com')# 在百度搜索栏中输入软件测试driver.find_element(By.ID, 'kw').send_keys('软件测试')# 点击百度一下按钮driver.find_element(By.ID, 'su').click()def test02(self):# 打开浏览器driver = webdriver.Chrome()# 加载百度首页driver.get('http://www.baidu.com')# 在百度搜索栏中输入软件测试driver.find_element(By.ID, 'kw').send_keys('硬件测试')# 点击百度一下按钮driver.find_element(By.ID, 'su').click()

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

1、基础层BasePage

from selenium import webdriverclass BasePage:#构造方法def __init__(self):# 打开浏览器self.driver = webdriver.Chrome()  # Alt+Enter# 加载百度首页self.driver.get('http://www.baidu.com')#封装定位元素def find_ele(self,*args):ele = self.driver.find_element(*args)return ele

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

from selenium.webdriver.common.by import By
from base.base_page import BasePageclass BaiduPage(BasePage):#元素定位,baidu_text_loc = (By.ID, 'kw')baidu_submit_loc = (By.ID, 'su')#获得元素对象,def get_text_obj(self):ele = self.find_ele(*BaiduPage.baidu_text_loc)return eledef get_submit_obj(self):ele = self.find_ele(*BaiduPage.baidu_submit_loc)return ele#页面操作def search(self,search_string):self.get_text_obj().send_keys(search_string)self.get_submit_obj().click()

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

from ddt import ddt, data
from po.baidu_page import BaiduPage@ddt
class BaiduTest(unittest.TestCase):@data('软件测试','硬件测试')def test01(self,seaString):BaiduPage().search(seaString)time.sleep(5)if __name__ == '__main__':unittest.main()

从上面的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持续集成

这些内容在我的CSDN博客当中基本都有涉猎,大家需要什么就去搜索什么吧!

六、总结

全文笔者耗时两小时,纯手打,纯干货,如果您觉得对您有帮助,请点赞,收藏,分享三连!您的支持是笔者最大的动力!

如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:

软件测试技术群:695458161,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:来自公众号:软测之家
出处:https://blog.csdn.net/pengjiangchun/article/details/106083729
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码相关推荐

  1. 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...

    一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...

  2. 自动化测试po模式是什么?自动化测试po分层如何实现?(附详细源码)

    一.什么是PO模式 全称:page object model  简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePag ...

  3. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  4. C#毕业设计——基于C#+asp.net+sqlserver基于C2C模式的网上购物系统设计与实现(毕业论文+程序源码)——网上购物系统

    基于C#+asp.net+sqlserver基于C2C模式的网上购物系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver基于C2C模式的网上购物系统 ...

  5. python selenium po_python+selenium基于po模式的web自动化测试框架

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

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

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

  7. python+selenium基于po模式的web自动化测试框架

    目录:导读 一.什么是Selenium? 二.自动化测试框架 三.自动化框架的设计和实现 四.需要改进的模块 五.总结 一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具, ...

  8. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版,进阶学习文末加群! 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序. ...

  9. 基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)

    目录 一.什么是Selenium? 二.自动化测试框架 三.自动化框架的设计和实现 四.需要改进的模块 五.总结 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一.什么是Sel ...

最新文章

  1. 深入理解GBDT多分类算法
  2. UNIX中的Poll函数
  3. 【Spring注解系列05】@Import注入原理
  4. 大规模数据处理开源软件
  5. what happened after a template is selected in Create with template button
  6. java 合并算法思想_Java实现合并两个有序序列算法示例
  7. 管理感悟:掌握写文档的技能
  8. 一步步教你3个月打造10万IP的流量(实战演练)(admin9.com/波菜)
  9. javaWeb详细教程
  10. SVN:冲突解决 Conflict discovered in
  11. ABO区块链的实际应用
  12. 人工智能突破!谷歌AI可以相互交流并加密
  13. 开源office办公套件
  14. signal信号的处理过程
  15. c++哈希(哈希表开散列实现)
  16. PCDATA和CDATA区别
  17. 23考研王道排序(第八章)自用笔记
  18. mysql之sql语句优化
  19. Cocos2d-x开发实例:使用Lambda 表达式
  20. 使用阿里云服务器无法正常解析域名怎么办

热门文章

  1. 扬州大学c语言作业,扬州大学c语言0600706期末试题
  2. Data truncation: Data too long for column ‘xxx‘
  3. python获取json数据,快速生成excel
  4. [当人工智能遇上安全] 3.安全领域中的机器学习及机器学习恶意请求识别案例分享
  5. 开源生物特征识别库 OpenBR
  6. java 正整数类型_Java 整数类型
  7. 微信支付页面不显示以及空白页error -1
  8. IWAM账号密码不一致引起IIS无法处理ASP文件
  9. 逍遥模拟器安装xposed installer
  10. UI设计现状与发展趋势是什么