本文章会讲述以下几个内容: 1.什么是PO设计模式(Page Object Model) 2.为什么要使用PO设计模式 3.使用PO设计模式要点 4.PO设计模式实例 1.什么是PO设计模式 (Page Object Model) 一种在测试自动化中变得流行的设计模式,使得自动化测试脚本的减少代码重复.更易读.减少维护成本. 一般PO设计模式有三层 第一层: 对Selenium 进行二次封装,定义一个所有页面都继承的 BasePage , 封装 Selenium 基本方法 例如:元素定位,元素等…
整理一下python selenium自动化测试实践中使用较多的po设计模式. 为什么要用PO 基于python selenium2开始开始ui自动化测试脚本的编写不是多么艰巨的任务.只需要定位到元素,执行对应元素的操作即可. 下面我们看一下这个简单的脚本实现百度搜索. 从上述代码来看,我们所能做的就是元素的定位,然后进行键盘输入或鼠标动作.就这个小程序而已,维护起来看起来是很容易的. 但随着时间的迁移,测试套件将持续的增长.脚本也将变的越来越多.如果我们需要维护10个页面,100个页面,甚至1…
下午,花了点时间来整理UI自动化设计,就把我所理解的PO设计模式项目结构脑图整理如下,有不对的地方还望多多包涵.谢谢…
一)框架目录的结构 二)config包当中的config.ini文件主要是用来存项目的绝对路径,是为了后续跑用例和生成测试报告做准备然后目前的配置文件大都会用yaml,ini,excel,还有.py也就是python文件来进行管理这里用的是ini文件. 三)config包当中的globalconfig文件主要是用来生成项目的路径,测试用例,测试报告的路径其中调用了ReadConfigIni这个类来读取ini格式的文件. 四)Data.xlsx主要是用来存放项目的url,账号和密码的通过excel…
无规矩不成方圆.编写代码也是,如果没有大概的框架,管理代码将会是一件很头疼的事. 先看看笔者以前写的python脚本: 如果只有一个用例,这样看着好像挺整洁的.但是当用例越来越多后,如果元素定位发生了改变,那你将要在多个类.多个方法中,去寻找那个元素,然后一个一个修改,这将耗费很多时间. 引入PO设计模式后,管理代码将会很轻松. 什么是PO设计模式? PO设计模式是一种业务流程与页面元素操作分离的模式:这意味着,当UI发生变化,元素定位发生变化时,只需要在一个地方修改即可. 下面是代码目录: 页…
面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传统测试脚本的弊端 测试脚本分离,维护成本高 可扩展性差 复用性低等 PageObject设计模式 PO的核心要素: 在PO模式中抽象封装成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性. 每个一个page都继承BasePage,通过driver来管理本page中元素,将…
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python selenium2开始UI级自动化测试并不是多么艰巨的任务.只需要定位到元素,执行对应的操作即可.下面我们看一下这个简单的脚本实现百度搜索. from selenium import webdriver import time driver = webdriver.Firefox() driver.i…
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python selenium2开始UI级自动化测试并不是多么艰巨的任务.只需要定位到元素,执行对应的操作即可.下面我们看一下这个简单的脚本实现百度搜索. from selenium import webdriver import time driver = webdriver.Firefox() driver.i…
前言 经过前面的实战我们已经编写了几个测试用例,下面我们要用PO设计模式来调整我们的代码,让页面元素和测试业务进行分离,这样看起来直观而且后期的维护也方便. python有一个第三方的PO设计的库,既然已经有了轮子,我们就可以直接造车了. 安装 首先我们来安装 pip install page_objects Code 页面封装 #pages.py from page_objects import PageElement, PageObject class Blog_Login_Page(Pag…
PO设计模式要点一:页面类都继承于BasePage 目录结构 ui_auto_test --src --pages --__init__.py --base_page.py --login_page.py --work_table_page.py login_page.py # conding:utf8 from .base_page import BasePage from .home_page import WorkTablePage #页面类都继承于BasePage class Login…