news 2026/9/29 6:59:47

Web自动化测试11- 初识Page Object设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Web自动化测试11- 初识Page Object设计模式

Page Object的缩写是PO,中文翻译为”页面对象模式“。它是一种设计模式,目的是创建Web UI对象库,即涉及的每一个页面都被定义为一个单独的类。类中应该包含页面元素对象和处理这些元素对象所需要的方法等。

核心思想

  1. 页面即类,操作即方法
  2. 分层,把同属一个页面的元素都分装在一个页面中

优点

  1. PO提供了页面元素操作和业务流程相分离的模式,使测试代码结构比以前更清晰,可读性更强
  2. 更方便地重用对象和方法
  3. 对象库可以通过集成不同的工具类来达到不同的测试目的
  4. 方便自动化测试的维护和更新,若某个页面的元素需要变更,仅需要修改封装好的页面元素类,而不用修改测试类

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层通常有以下几点需要注意

  1. 数据文件类型的选型根据项目的实际需要灵活选择。举例说明,在测试场景中,有时需要测试上传功能,在测试数据中需要清楚定义数据字段等头部信息,而且上传文件的信息可能比较大。此时用CSV文件就比用excel文件优势明显,原因是CSV保存的是文本文件,而excel保存的是二进制文件,从软件的可操作性或易用性来说,excel文件比不上CSV文件,而在大数据量场景下,excel文件没有CSV文件高效
  2. 数据的维护要有条理性,关联性比较强的测试数据可以存放在同一个工作表中,便于维护。

Logs层

Logs层数据主要存放在项目运行过程中产生的日志文件中。日志文件记录了每次测试执行过程中的详细信息,便于分析定位测试过程中的异常。框架的日志在一定程度上反映了框架是否运行在正确的轨道上。关于日志的维护,有一些建议如下

  1. 日志等级或频度要设置得合理。在测试用例时,需要对要打印的日志进行筛选,对于一些重点操作,最好打印日志
  2. 建议给框架中添加一些系统级别的日志,如对系统资源进行监控的日志,这样可以便于对一些非框架问题进行定位
  3. 日志的管理,如定期清理日志

Reports层

Reports层数据主要存放在项目执行过程中产生的测试报告文件中,测试报告是对测试结果的总结。Reports层的报表可能不只是一个测试报告文件那么简单,还需要探究报告所呈现的内容的准确性、完整性和持续性等,而且后续报表能力的迭代不能影响之前的测试结果或报告。

如果自动化测试项目的周期比较长,建议对测试结果进行数据存储,如将数据存储在MongoDB或者MySQL数据库中等

配置文件(config.ini)

该文件包含了整个项目的配置项。如果后续还需要添加其他项目,直接在该文件中进行维护即可。建议将驱动driver存放在项目根目录下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 6:58:16

C语言结构体内存对齐与sizeof计算实战解析

结构体这三个字,写过 C 或者 C 的人都不陌生,可真要回答“这个结构体占多少字节”“为什么调换两个成员顺序之后 sizeof 就变了”这类问题,能一口答上来的人并不多。我见过不少写了三四年嵌入式代码的人,遇到结构体在内存中的存储…

作者头像 李华
网站建设 2026/9/29 6:58:11

Gram-Schmidt正交化数值稳定性深度解析:从CGS到MGS与Householder

写这篇Gram-Schmidt正交化笔记,起因是上周帮一位做点云配准的朋友排查程序异常。他从激光扫描数据里提取了一组近似线性相关的测量向量,想恢复出坐标系的三个标准正交基——这是Gram-Schmidt正交化最典型的应用场景。结果他直接套了网上最常见的经典算法…

作者头像 李华
网站建设 2026/9/29 6:57:50

16G显存真能跑27B量化大模型?实操效果与优化指南

先别急着过年,如果你手头正好是一张16G显存的显卡,又刷到今天这种标题——"16G显存本地部署27B量化大模型实际效果"——你的第一反应可能是:真的假的?会不会卡成PPT?量化之后还能用吗?我先直接说…

作者头像 李华
网站建设 2026/9/29 6:57:36

从Notebook到生产:AI工程化落地的完整实战指南

做AI这几年,我最大的体会是:能跑通一个模型的人很多,能把模型稳稳当当跑上生产、持续迭代、出了问题还能快速定位的人,少之又少。市面上大多数教程都在教你怎么用PyTorch搭一个网络、怎么调loss,但很少有人告诉你&…

作者头像 李华
网站建设 2026/9/29 6:57:10

Claude Code 与 CC Switch 安装使用:TaoToken 统一 Key 接入配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华