整体介绍
对于ui自动化,是把项目的每个页面都封装成类,类实例化后得到页面对象,使用页面对象来调用各自页面的方法,实现对页面进行操作。
用到传统ui框架的pageObjdect的思想(分两层)
-
页面层:
- 读取yml配置文件中的 各个页面的定位器
- 实现元素的定位
- 页面的基本操作等等(如,对某个元素进行输入或点击)
- 会加上显示等待逻辑,增加代码执行的成功率
-
用例层:
- 运用pytest框架的用例编写规则,在一个用例里去调用页面层的方法,完成用例的编写
对于pageObject这种方式,代码便于维护,好读,好复用,好扩展。
该框架的特点:
- 在定义浏览器驱动对象时:
a. 判断是否已经有浏览器对象,`保障了多个测试用例不会打开多个浏览器`。
b. 通过参数来控制打开的浏览器类型,通过参数来控制是否开启无头模式
- 页面层中,定义了页面基类,其他页面类继承它
a.在init方法中,获取浏览器驱动对象成实例属性(self.driver),通过这个实例属性来定义了一些基本方法,如定位元素、打开页面、输入文本,点击元素等。
b.读取yml配置文件,页面子类继承时可以直接获取到本页面的定位器,实现了定位器统一管理
代码层级
- common目录
- diver.py —封装浏览器驱动类
- basePage.py – 公共的页面基类
- config目录
- allelements.yml — 所有页面定位器配置文件
- config.py – 项目地址,等待时长等配置
- datas目录
- 放用例数据文件
- docs目录
- 放ui自动化相关文档、文件,如chromedriver.exe文件,
- 框架结构梳理笔记等,业务梳理等
- outfiles目录
- 放report报告文件
- 图片、视频
- 日志等
- utils目录
- 放公共方法,
- 如读取yml文件方法
- 写日志方法
- 操作数据库等
pages目录
- 也就是页面层,一个页面封装一个py文件,封装一个类继承basePage
testCases目录
- 也就是用例层,一般一个页面一个测试类