做过UI的自动化测试都知道,测试是对元素的操作,因此特别依赖元素的定位。但是这就会带来一个很大的问题—“维护成本”,如果你在不同的测试用例脚本中使用的一个元素的定位多次,当该元素的位置或者属性发生变化,就必须查找到脚本中对应的使用的位置进行修改。
Page Object
Page Objects模式是一种测试设计模式,它可以指整个页面,也可以指页面上的某个区域。
Page Object将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),提高用例的可维护性。
Page Object的优点
- 减少了代码的重复
- 让测试更具可读性和强大的
- 提高了测试的可维护性
实例
下面以“百度搜索”为例详细说明,Page Object的原理:
1、项目目录:
.
├── pages
│ ├── BaiduPage.py
│ ├── BasePage.py
│ └── __init__.py
├── report
├── run.py
├── testcases
│ └── Test_Baidu.py
└── utils
├── PublicMethod.py
├── __init__.py
└── configfile.py
pages:文件夹下存放测试Page Object的基类和对应的测试页面
report:通过HTMLTestRunner生成的测试报告存放位置
testcases:存放具体的测试脚本,以Test开否的.py文件
utils:存放公共的方法(PublicMethod)和配置文件(configfile)
run.py:从testcases中获取测试用例集,并执行的脚本文件
2.1、pages-定义页面基础类BasePage.py
# -*- coding:utf-8 -*-
class BasePage(object):
"""
This is a base page class for Page Object.
"""
def __init__(self, driver)