实战 | UI 自动化测试框架设计与 PageObject 改造

简介: ![](https://ceshiren.com/uploads/default/original/3X/e/f/efd4f6ab53cc4a449657509b655cf5e6499878e5.jpeg)在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战:- 简单的录制/回放速度快,但无法适应复杂场景;- 编写自动化测试脚本比较灵活,但工作量大且可维护性差;- 以往的


在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战:

  • 简单的录制/回放速度快,但无法适应复杂场景;
  • 编写自动化测试脚本比较灵活,但工作量大且可维护性差;
  • 以往的封装技术(PageObject)可以适应各种 UI 场景,但结构松散,无法在多项目中迁移;

因此,测试团队通常还需要一种定制测试框架,用以弥补现有框架的缺点。
由于 UI 自动化测试框架围绕 UI 界面使用,因此,依旧选用 PageObject 设计模式对 UI 及测试进行封装,同时配合 Pytest 单元测试将脚本能够有效的组织、连贯应用起来,从而提高框架的可维护性和可读性。
由于测试框架基于 PageObject 设计模式,主要方向为 PO 改进,数据驱动,异常处理等,比如:

  • 测试数据的数据驱动:将数据存储到外部 yaml 文件中,利用 yaml 工具进行数据读取;
  • 数据步骤的数据驱动:将操作步骤放到外部 yaml 文件中,利用 yaml 工具对操作步骤进行读取,用专门函数解析并实现操作步骤;
  • 自动化异常处理机制:对元素查找模块进行封装和改进,包括如何处理弹窗;

作为通用的 UI 测试框架, PageObjet 不仅适用于 Web 自动化测试,也可适用 Appium 移动自动化测试,其优点如下:

  • 减少代码重复
  • 提高测试用例可读性
  • 提高测试用例可维护性


本案例将对雪球 App 进行 Page Objetct 封装与改进。
当启动雪球 App 时,会进入首页。点击搜索框进入搜索页,搜索某支股票然后判断股价是否大于 200:

PageObjetct 的模块关系如下,所有的模块要继承 BasePage , App 实现启动,重启,停止等操作, Main 实现进入搜索页,进入股票页等操作:

base_page 模块是所有 page 类的父类,其中定义了公共方法,比如封装下面的 find 方法后,可以让子类调用 find :
App 模块封装 app 的启动,重启,停止等方法,当 app 启动时会进入 main 页面,因此在下面的 main 方法要 return Main ,Main 类的定义在后面会讲解:
Main 模块是首页的 PageObject ,其中的方法封装了首页的重要功能,比如下面代码中的 goto_search_page 封装了点击搜索并跳转到 Search 页:
Search 模块可以搜索一支股票,还可以获取股票的价格,比如下图:

封装代码如下:
最后对上述代码建立测试,新建测试模块 test_search :

以上,供大家参考,欢迎一起留言探讨。

相关文章

  • UI 自动化测试应不应该投入?有没有前途?怎样做最明智?
  • 实战 | UI 调度自动化测试平台(基于 Python)
  • Page Object 模式很火,UI 自动化测试到底要不要用?怎么用?
  • PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

原文链接
更多技术分享:https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=Aliyun&timestamp=1650618192
获取更多内容

相关文章
|
7月前
|
前端开发 JavaScript API
现代前端开发中的Web组件化设计与实践
在现代前端开发中,Web组件化已经成为了一个关键的设计思想和实践方法。本文探讨了Web组件化的概念、优势以及如何在实际项目中进行设计和应用。通过分析实例和最佳实践,展示了如何利用组件化开发提升前端开发效率和代码可维护性,同时也解决了在大型项目中常见的代码重用和团队协作问题。
|
9月前
|
持续交付 Android开发 开发者
构建高性能微服务架构:后端开发的终极指南构建高效Android应用:Kotlin与Jetpack的完美结合
【5月更文挑战第28天】 在现代软件开发的浪潮中,微服务架构已经成为了设计灵活、可扩展且易于维护系统的重要模式。本文将深入探讨如何构建一个高性能的微服务架构,涵盖从基础概念理解到实践策略部署的全过程。我们将讨论关键的设计原则、技术选型、性能优化技巧以及安全性考虑,旨在为后端开发者提供一个全面的指南,帮助他们构建出能够适应快速变化的市场需求和技术挑战的系统。 【5月更文挑战第28天】 在移动开发的世界中,效率和性能是衡量一个应用成功与否的关键因素。本文将深入探讨如何通过结合Kotlin语言和Android Jetpack组件,来构建一个既高效又易维护的Android应用。我们将透过实际案例分析
|
9月前
|
存储 设计模式 前端开发
构建高效安卓应用:Jetpack MVVM 架构的实践之路
【4月更文挑战第9天】 在移动开发的迅猛浪潮中,Android 平台以其开放性和灵活性受到开发者青睐。然而,随着应用复杂度的不断增加,传统的开发模式已难以满足快速迭代和高质量代码的双重要求。本文将深入探讨 Jetpack MVVM 架构模式在 Android 开发中的应用实践,揭示如何通过组件化和架构设计原则提升应用性能,实现数据驱动和UI分离,进而提高代码可维护性与测试性。我们将从理论出发,结合具体案例,逐步展开对 Jetpack MVVM 架构的全面剖析,为开发者提供一条清晰、高效的技术实施路径。
|
9月前
|
数据采集 Web App开发 前端开发
前端自动化UI测试的完整方案
前端自动化UI测试的完整方案
906 0
|
前端开发 JavaScript IDE
前端工程化===Webpack?No,我来告诉你什么是前端工程化!
前端工程化===Webpack?No,我来告诉你什么是前端工程化!
156 1
|
监控 测试技术 持续交付
【面试题】给你一个项目,你准备怎么开展ui自动化
【面试题】给你一个项目,你准备怎么开展ui自动化
|
JavaScript 测试技术
【Vue 开发实战】实战篇 # 46:如何做好组件的单元测试
【Vue 开发实战】实战篇 # 46:如何做好组件的单元测试
161 0
【Vue 开发实战】实战篇 # 46:如何做好组件的单元测试
|
设计模式 测试技术
自动化测试教程(20)了解PageObject模式
(1)page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素,这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试页Class中页面的属性即可。获取页面中元素的属性可以通过id,class或者XPath获取,在id唯一的情况下,可以使用id获取页面元素,否则可以使用XPath定位页面元素。
自动化测试教程(20)了解PageObject模式
|
设计模式 存储 测试技术
实战 | UI 自动化测试框架设计与 PageObject 改造
![](https://ceshiren.com/uploads/default/original/3X/e/f/efd4f6ab53cc4a449657509b655cf5e6499878e5.jpeg) 在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战: - 简单的录制/回放速度快,但无法适应复杂场景; - 编写自动化测试脚本比较灵活,但工作量大且可维护性差; - 以往的
|
JSON 编解码 文字识别
Flutter UI自动化测试技术方案选型与探索
Flutter页面无法直接使用Native测试工具定位元素,给自动化测试带来很多不便。虽然Google官方推出了Flutter driver 和 Integration test,但是在实际使用中存在以下问题:
677 0
Flutter UI自动化测试技术方案选型与探索