Page Object的缩写是PO,中文翻译为”页面对象模式“。它是一种设计模式,目的是创建Web UI对象库,即涉及的每一个页面都被定义为一个单独的类。类中应该包含页面元素对象和处理这些元素对象所需要的方法等。
核心思想
- 页面即类,操作即方法
- 分层,把同属一个页面的元素都分装在一个页面中
优点
- PO提供了页面元素操作和业务流程相分离的模式,使测试代码结构比以前更清晰,可读性更强
- 更方便地重用对象和方法
- 对象库可以通过集成不同的工具类来达到不同的测试目的
- 方便自动化测试的维护和更新,若某个页面的元素需要变更,仅需要修改封装好的页面元素类,而不用修改测试类
PO项目的框架结构
- Base层
- Common层
- Data层
- Logs层
- PageObject层
- Reports层
- TestCases层
- config.ini
其中的核心层是PO层,围绕着PO层又新增了其他层级。采用结构化模型可以使自动化测试越来越清晰,也会降低后期维护成本,提高项目自动化的程度
Base层
Base层封装了项目需要的基本方法,如元素click操作、send keys操作、调用Java space脚本的方法和其他一些与基本浏览器相关的操作等
Base层的一些方法调用了Common层的模块方法,需要先熟悉Common层代码结构
Common层
Common层主要包含处理Excel文件的方法,获取项目路径、测试系统URL的信息和日志功能的实现方式。
PageObject层
PageObject层是核心层,该层不但涉及代码技术,还涉及对项目业务的分析,进而对相关的页面进行分析。在业务分析方面,首先分析要进行po的页面。其次对每个范围内的页面进行详细分析
TestCases层
TestCases层的作用是管理测试用例和执行测试,相当于测试的总入口。在项目中,该层可以存放测试套件和测试用例的相关代码。
Data层
项目中的data目录用于存放测试数据模块,该模块用于维护测试数据
Date层通常有以下几点需要注意
- 数据文件类型的选型根据项目的实际需要灵活选择。举例说明,在测试场景中,有时需要测试上传功能,在测试数据中需要清楚定义数据字段等头部信息,而且上传文件的信息可能比较大。此时用CSV文件就比用excel文件优势明显,原因是CSV保存的是文本文件,而excel保存的是二进制文件,从软件的可操作性或易用性来说,excel文件比不上CSV文件,而在大数据量场景下,excel文件没有CSV文件高效
- 数据的维护要有条理性,关联性比较强的测试数据可以存放在同一个工作表中,便于维护。
Logs层
Logs层数据主要存放在项目运行过程中产生的日志文件中。日志文件记录了每次测试执行过程中的详细信息,便于分析定位测试过程中的异常。框架的日志在一定程度上反映了框架是否运行在正确的轨道上。关于日志的维护,有一些建议如下
- 日志等级或频度要设置得合理。在测试用例时,需要对要打印的日志进行筛选,对于一些重点操作,最好打印日志
- 建议给框架中添加一些系统级别的日志,如对系统资源进行监控的日志,这样可以便于对一些非框架问题进行定位
- 日志的管理,如定期清理日志
Reports层
Reports层数据主要存放在项目执行过程中产生的测试报告文件中,测试报告是对测试结果的总结。Reports层的报表可能不只是一个测试报告文件那么简单,还需要探究报告所呈现的内容的准确性、完整性和持续性等,而且后续报表能力的迭代不能影响之前的测试结果或报告。
如果自动化测试项目的周期比较长,建议对测试结果进行数据存储,如将数据存储在MongoDB或者MySQL数据库中等
配置文件(config.ini)
该文件包含了整个项目的配置项。如果后续还需要添加其他项目,直接在该文件中进行维护即可。建议将驱动driver存放在项目根目录下。