1.什么是PO模式
PO模式就是Page Object的缩写,即页面对象。PO模式的目的为页面对象与测试代码的分离,使得自动化测试代码可以快速构建。当自动化测试以页面为单位时,将页面中的控件抽取出来然后封装成对象,并定义每个控件的操作方法,那么当页面发生改变时修改测试代码将很方便。
2.PO模式
传统的PO模式,是将页面对象和测试代码分离,以页面为单位为每个页面创建一个页面对象。接下来我们以百度首页为例,首先需要创建百度主页页面对象文件,该文件用于封装百度主要页面对象以及操作页面对象的各类方法,代码如下所示:

# encoding = utf-8
from selenium.webdriver.common.by import By
from time import sleep
class Page(object):"""基础类,继承页面对象类"""login_url = "https://www.baidu.com""""初始化函数,定义timeout/driver/base_url"""def __init__(self, driver, base_url=login_url):self.base_url = base_urlself.driver = driverself.timeout = 30"""定义目标页面"""def target_page(self):return self.driver.current_url == self.base_url"""定义打开网页的函数"""def open(self):url = self.base_urlself.driver.get(url)print(self.driver.current_url)"""定义获取元素基础方法"""def find_element(self, *loc):return self.driver.find_element(*loc)
class SearchPage(Page):"""百度首页,页面对象类"""url = '/'input_loc = (By.NAME, "wd")search_button_loc = (By.ID, "su")"""每个页面封装对应方法"""def input_search_string(self, search_string):self.find_element(*self.input_loc).send_Keys(search_string) #输入要检索的字符串def click_search_button(self):self.find_element(*self.search_button_loc).click() #点击百度按钮#定义检索字符串函数
def search_string(driver, string):search_Page = SearchPage(driver)search_Page.open()search_Page.input_search_string(string)sleep(3)search_Page.click_search_button()

接下来,编写测试代码,代码如下所示:

from selenium import  webdriver
from PageObject import Baidu_Main_Page
from time import sleep
import unittest
class Search_Page(unittest.TestSuite):def setUp(self):self.chrome_driver=webdriver.Chrome()self.string ="dangjunquan"def test_search_dangjunquan(self):try:"""调用封装好的search_string()"""Baidu_Main_Page.search_string(self.chrome_driver,self.string)sleep(3)self.assertTrue("dangjunquan" in self.chrome_driver.page_source)except AssertionError as  e:raise edef tearDown(self):self.chrome_driver.quit()
if __name__ == "__main__":unittest.main()

3.执行测试结果
运行测试代码后,结果如下图所示:

C:\PO\venv\Scripts\python.exe C:/PO/TestScript/Test_Baidu_Main_Page.py----------------------------------------------------------------------
Ran 0 tests in 0.000sOKProcess finished with exit code 0

Python自动化测试之PO模式相关推荐

  1. 【Web UI自动化测试】Web UI自动化测试之PO篇(全网最全)

    本文大纲截图: 1.PO模式基本介绍[文末免费分享自动化测试学习资源] 概念:PO是Page Object的缩写,PO模式是自动化测试项目开发实践的最佳设计模式之一. 作用:通过对界面元素的封装减少冗 ...

  2. 自动化测试之PO模型

    一. PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率 二.PO的核心要素 1. ...

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

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

  4. python自动化测试环境搭建_selenium+python自动化测试之环境搭建

    最近由于公司有一个向谷歌网站上传文件的需求,需要进行web的自动化测试,选择了selenium这个自动化测试框架,以前没有接触过这门技术,所以研究了一下,使用python来实现自动化脚本,从环境搭建到 ...

  5. python自动化测试之Appium自动化测试环境搭建

    [文章末尾给大家留下了大量的福利] 前言: 好几个小伙伴在问appium环境搭建咋整勒,这不就整出来了嘛,接下来几篇文章就把常用的所有的环境搭建都写完把 Appium 介绍 Appium是一个开源工具 ...

  6. Python自动化测试之cookie绕过登录(保持登录状态)

    目录 前言 cookie工作原理 cookie绕过登录 1,哪些场景需要使用cookie绕过登录? 2,接下来举例说明怎样编写python脚本,利用cookie机制绕过登录. 3,思路: 4,实际操作 ...

  7. python自动化测试之unittest简介讲解

    前言 小伙伴们好呀,我们都知道java有很常见的单元测试框架Junit和TestNG,那么python里面也有单元测试框架-unittest,相当于是一个python版的junit.python里面的 ...

  8. python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析

    1.确保数据库编码是utf8编码.若不是,请将my.ini的client,mysql,mysqld三个字段下面添加default-character-set = utf8,这样可以永久改变在新建数据库 ...

  9. 微信小程序UI自动化实践:python+minium+PO模式(超详细教程附源码供下载)

    文章目录 前言 一.minium介绍 二.安装环境 1. 安装minium doc 2. 安装minium 3. 启动小程序 三.准备知识 1. 启动 2. 配置 3. 命令行运行 4. 元素定位 5 ...

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

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

最新文章

  1. 欧盟为无人机立法,对国产厂商是福还是祸?
  2. 嘈杂场景语音识别准确率怎么提?脸书:看嘴唇
  3. 用姓名字段统计人数_2019年度全国各地姓名报告分析汇总(全国、深圳、佛山、杭州)...
  4. VUE2.x的浏览器兼容情况汇总
  5. 属于服务器端运行的程序_生信分析云平台产品开发 - 5 生信分析pipeline服务器端运行...
  6. CSS3特效 - 呼吸灯效果
  7. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
  8. mac macaca android,[求助] mac 上安装 macaca 的问题
  9. 谷歌原数据保护团队技术主管:零信任实践分享
  10. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  11. 在计算机上配置超级终端,电脑中如何添加超级终端?添加超级终端的方法
  12. 一级建造师-通信-五种施工顺序-口诀
  13. Ext4分区不能mound的问题修复
  14. 游戏应用市场APP软件下载平台网站源码+手机版
  15. Thymeleaf th:each遍历,th:if、th:switch 条件判断,input,select,radio 回显赋值
  16. fineReport10连接达梦数据库
  17. python学习--文件操作
  18. 杨建允:2022年社交电商要如何突围、会走向何方?
  19. 生活与管理中的18条实用定律
  20. 小程序能给创业者带来什么?内容小程序创业机会来了

热门文章

  1. win7显示u盘efi分区_win7下找不到u盘efi分区
  2. 11:c# oop思想面向对象编程(by-朝夕)
  3. 在Linux中禅道的安装流程
  4. docker 安装 禅道系统
  5. 计算长方体、四棱锥的表面积和体积
  6. 小孔子内容管理系统V2.0正式开源发布
  7. 如何求矩阵的特征值和特征向量
  8. 【Scratch】青少年蓝桥杯_每日一题_12.01_角色装扮
  9. wpsa3版面怎么变成a4、排版不变_怎么把wpsa3转变成a4
  10. Word文档A4如何打印成A3