代码分层原因
- 公司小:一个人负责所有工作 → 业务简单,代码量少,单文件
- 公司大:分多个部门,分工协作 → 业务复杂,代码量大,多文件
PageObject模式
- 引入PageObject的原因
- 测试用例存在大量元素定位和操作细节,而UI会经常变动
- 希望提升自动化测试代码的复用性和维护性
- PageObject简称为PO
- PageObject是一种把一个网页(或叫做页面)或网页里的一块区域封装为为一个对象的设计模式(设计思想),用一个类来实现它的对象内的信息管理,将当前页面里所有元素定位和操作的细节隐藏到这个页面对象里,形成一个个可以被调用的对象
- 通过调用某页面对象里封装的API,testcase可以完成该页面的操作
PageObject设计模式核心思想
- 测试对象(页面)和测试用例(操作业务流程)分离
- 调用所需页面对象中的方法,组成测试用例
- 在用例中,是看不到元素定位和元素操作的
- 优势
- 使代码能在页面元素发生改变后,尽量减少测试脚本的改动量
- 最大程度支持代码的可重复性使用
- 使得测试框架结构合理、清晰、代码更加模块化、避免冗余、耦合性过高
模块流程图
具体实现步骤
- 创建一个页面对象类
- 在页面对象类的构造方法中,传递webdriver参数
- 在测试用例的类中,实例化页面对象类,并且传递在测试用例中已经实例化的webdriver对象
- testcase里新建测试用例Python unit test类型的模块testcase9001.py
- 创建setUp和tearDown方法
- testcase9001.py里导入LoginPage
- 在测试方法里实例化LoginPage(创建LoginPage类型对象)
- 在页面对象类中,编写该页面的所有操作的方法
- 在测试类中,调用这些操作方法
PageObject总结
对脚本实现进行架构设计,通常做法是分多层
- 页面对象层:页面对象层用于实现页面元素和一些特殊控件的操作
- 业务层:业务层是我们真正的测试用例的步骤
- 数据层:用于存放我们的测试数据
优势: - 集中管理元素对象,便于应对元素的变化
- 集中管理一个page内的公共方法,便于测试用例的编写
- 后期维护方便,不需要重复的复制和修改代码