当前位置: 首页 > news >正文

实用指南:【 GUI自动化测试】GUI自动化测试(一) 环境安装与测试

实用指南:【 GUI自动化测试】GUI自动化测试(一) 环境安装与测试

请添加图片描述

文章目录

  • 一、为什么要做GUI⾃动化
    • 1.1 GUI⾃动化的意义
    • 1.2 GUI⾃动化适⽤场景
  • 二、为什么选择pywinauto
    • 2.1pywinauto的优势
    • 2.2 pywinauto的局限性
  • 三、安装pywinauto
  • 四、安装UI对象检查⼯具
  • 五、Python 虚拟环境的“环境隔离”核心特性
  • 六、GUI⾃动化简单⽰例
  • 总结


一、为什么要做GUI⾃动化

1.1 GUI⾃动化的意义

在软件测试过程中,有许多重复性的测试⽤例需要执⾏,例如对软件的各种基本功能进⾏验证。如果⼿动测试,测试⼈员需要不断地重复相同的操作步骤,这不仅耗时⽽且容易出错。⽽GUI⾃动化测试⼯具可以在短时间内快速执⾏⼤量重复的测试⽤例,并且能够始终按照预设的逻辑和步骤进⾏操作,从⽽极⼤地提⾼了测试效率。

通过GUI⾃动化测试,可以减少对⼈⼒的依赖。原本需要多名测试⼈员花费数⼩时甚⾄数天才能完成的测试⼯作,现在只需编写好⾃动化测试脚本,由⾃动化测试⼯具在规定时间内完成,这样可以将测试⼈员从繁琐的重复性⼯作中解放出来,在⼀定程度上降低了⼈⼒成本。
在这里插入图片描述

1.2 GUI⾃动化适⽤场景

GUI⾃动化适⽤于各种需要对图形⽤⼾界⾯进⾏重复性、⼀致性测试的场景,尤其在验证软件功能的稳定性、正确性和⽤⼾体验⽅⾯发挥着重要作⽤。

在软件开发的各个阶段,从集成测试到验收测试,它都可以帮助测试⼈员快速发现潜在问题,如界⾯元素是否正常显⽰、交互是否流畅、功能是否按预期⼯作等,从⽽确保软件质量。

GUI⾃动化可以模拟不同⽤⼾环境下的操作,测试其兼容性和稳定性。此外,在进⾏⼤规模测试时,它能显著提⾼测试效率,减少⼈⼒成本,快速提供反馈,⽀持持续集成和持续交付,加速软件开发周期。

总之,GUI⾃动化适⽤于需要⾼效、准确、重复测试GUI应⽤程序的各种场景,有助于提升软件质量、⽤⼾满意度和开发效率。需要注意的是,尽管GUI⾃动化适⽤于上述场景,但其成功依赖于界⾯元素的稳定性⸺若UI频繁变动或涉及复杂交互,维护成本可能陡增。
在这里插入图片描述

这个图展示了自动化测试在项目回归测试中的应用逻辑,结合软件版本迭代场景来解释:

  1. 版本与功能变化
  • v1.0版本:包含「功能1 ~ 功能10」,是初始版本的核心功能。
  • v2.0版本:在保留「功能1 ~ 功能10」(标注为“历史功能”)的基础上,新增了「功能11 ~ 功能30」(红色框突出显示,代表新版本的新增功能)。
  1. 自动化测试的作用(解决回归测试问题)
    回归测试的核心是:验证“新增/修改功能后,原有历史功能是否仍能正常工作”
  • 首先,在v1.0阶段,会为「功能1 ~ 功能10」编写自动化测试脚本(绿色文字“编写自动化测试脚本”指向v1.0,代表提前为旧功能构建自动化测试能力)。
  • 当版本迭代到v2.0(新增了功能11~30)时,需要验证「功能1 ~ 功能10」这些历史功能是否受新版本影响。此时,通过自动化测试(绿色文字“自动化测试”指向v2.0的“历史功能”区域),可以快速、批量地执行原有功能的测试,无需手动重复测试,高效完成回归测试。

简言之,图中用版本迭代的场景,说明“自动化测试能高效解决‘新版本新增功能后,历史功能是否正常’的回归测试问题”。

GUI
-》graphical图形化
GUI自动化测试适用场景:界面不会频繁发生改变,交互不会过于复杂

二、为什么选择pywinauto

Pywinauto是⼀款基于Python的跨平台GUI⾃动化库,专⻔针对Windows桌⾯应⽤程序设计,其核⼼能⼒在于通过模拟⽤⼾交互⾏为(如⿏标点击、键盘输⼊)实现对窗⼝、对话框及内部控件的精准定位与操作,适⽤于⾃动化测试、批量任务处理及⽇常办公流程优化等场景。

该库通过两种底层技术(backend="win32"和backend=“uia”)适配不同框架开发的应⽤程序:

2.1pywinauto的优势

  • 基于Python: Python语言简洁易学,适合快速开发和维护。
  • 跨平台支持:支持Windows 7及以上版本,兼容性良好。
  • 丰富的控件支持:支持Windows原生控件(如按钮、文本框、表格)以及第三方控件(如WPF、Qt)。
  • 动态查找机制:自动等待控件加载完成,无需显式等待。
  • 强大的调试工具:提供pywinauto.findwindows模块,方便定位控件。
  • 社区活跃:开源项目,持续更新,文档和示例丰富。

2.2 pywinauto的局限性

仅⽀持Windows:⽆法⽤于Mac或Linux平台。
对⾮标准控件⽀持有限:某些⾃定义控件可能需要额外处理。

注意:pywinauto⽀持传统Windows原⽣应⽤框架和部分跨平台框架(需在Windows运⾏),以下是⼀些⽆法使⽤
pywinauto 实现GUI⾃动化的应⽤程序分类,以及原因:

  1. 基于Web的应⽤程序
    原因:pywinauto 是为本地Windows应⽤程序设计的,⽆法直接与基于浏览器的Web应⽤
    程序交互。Web应⽤程序的⾃动化通常需要使⽤如Selenium这样的⼯具。

⽰例:GoogleChrome中打开的任何⽹⻚或基于Web的企业应⽤。

  1. 基于⾃定义渲染引擎的应⽤程序

    原因:某些应⽤程序(如使⽤Flutter、ReactNative或其他跨平台框架开发的应⽤)可能使⽤
    ⾃定义的渲染引擎,这些引擎不会暴露标准的WindowsUI⾃动化接⼝(如Win32或UIA)。

⽰例:企业微信、某些使⽤Flutter开发的桌⾯应⽤。

如何分辨什么是基于Web的应⽤程序、使⽤⾃定义渲染框架的应⽤程序?这些在⽬前看起来确实很难。如何分辨是否能⽤pywinauto进⾏⾃动化测试的应⽤程序,在后⾯的“安装UI对象检查⼯具”内容中,再来讲解

三、安装pywinauto

  1. 安装Python:确保已安装Python环境(推荐3.7或更⾼版本)。
pip install pywinauto==0.6.9

安装完成后,可以通过以下命令验证安装:

pip list

如果输出中包含pywinauto,则说明安装成功。

四、安装UI对象检查⼯具

在讲解selenium实现web⾃动化时,定位⻚⾯的元素是必须要的,如何进⾏元素定位?打开⻚⾯开发者⼯具,可以直接进⾏元素定位,定位到元素之后才能对指定元素进⾏⼀系列的操作,对于GUI⾃动化也是⼀样,要想对界⾯的元素进⾏操作,我们得先会“找元素”,⽽找元素我们需要⽤UI对象检查⼯具,

UI对象检查⼯具有很多,诸如Spy++、Inspect.exe、UISpy,这些⼯具基本都⻓得⼀样,且操作上基
本⽆差,上课我们统⼀使⽤UISpy⼯具来进⾏UI对象检查。
在这里插入图片描述

  • UISpy是⼀款由微软提供的⼯具,专⻔⽤于UI⾃动化测试。它允许测试⼈员查看应⽤程序的UI⾃动化模型,包括控件树、属性和事件。UISpy特别适⽤于编写UI⾃动化脚本,因为它提供了⼀个可视化的界⾯来帮助测试⼈员选择UI元素,并且可以模拟⽤⼾对这些UI元素的操作。

是否还记得,我们在“pywinauto局限性”内容中还遗留了⼀个问题:“如何分辨是否能⽤pywinauto 进⾏⾃动化测试的应⽤程序”,在这⾥我们可以跟⼤家公开答案了,应⽤程序可以通过UI对象检查⼯具定位到元素,说明该元素的实现是⽀持传统Windows原⽣应⽤框架,⽽⽆法识别的元素则属于“不能⽤pywinauto进⾏⾃动化测试的”。

五、Python 虚拟环境的“环境隔离”核心特性

在这里插入图片描述

  1. 左侧:Python 通用库(全局环境)
    这是系统级/全局的 Python 环境,安装了 requestsyamlpytestpywinauto 等库。所有不使用“虚拟环境”的项目,都会直接依赖这个全局环境的库

  2. 中间:虚拟环境(Test01 项目)
    下方说明“每个项目独有一份环境,单独来管理所需要的库”,体现了虚拟环境的核心作用:

  1. 右侧:虚拟环境(Test02 项目)
    Test02 的虚拟环境里安装了 pytestpywinauto 库——这说明 Test02 项目的依赖是 pytestpywinauto,它的虚拟环境与全局环境、Test01 的环境完全隔离,库的安装/版本仅服务于 Test02 自身。

核心意图:解释虚拟环境的价值
虚拟环境的本质是为每个项目打造“独立的依赖空间”,解决以下问题:

六、GUI⾃动化简单⽰例

⽰例:打开电脑⾃带记事本,输⼊内容,并保存⽂件。
在这里插入图片描述
在这里插入图片描述
第一种安装方法
在这里插入图片描述

第二种安装指令安装
在这里插入图片描述

在这里插入图片描述
代码:

import time
from pywinauto.application import Application
# 启动应用程序
app = Application(backend="uia").start("notepad.exe") # 这里直接赋值给app
time.sleep(3) # 等待记事本启动
# 连接到已启动的记事本
app.connect(title_re=".*Notepad")
# 获取窗口
notepad = app.window(title_re=".*Notepad")
# 输入文本
notepad.Document.type_keys("Hello, Pywinauto!")
# 等待1秒看效果
time.sleep(1)
# 关闭应用程序
notepad.close()

效果:自动写文本文件测试,自动关闭
在这里插入图片描述


总结

请添加图片描述

http://www.hskmm.com/?act=detail&tid=17350

相关文章:

  • 喵喵大王の新日记
  • 多GPU本地布署Wan2.2-T2V-A14B文本转视频模型 - yi
  • NOI 模拟赛五
  • 什么是Delphi4Python?
  • 实用指南:Python的大杀器:Jupyter Notebook处理.ipynb文件
  • flask认证机制logging模块实战
  • 25.9.25随笔联考总结
  • 软工9.25
  • 2025/9/25 模拟赛总结
  • 代码随想录算法训练营第九天 |151.翻转字符串里的单词、 LCR 182. 动态口令、28. 实现 strStr()、459.重复的子字符串
  • 当日总结(课后作业2)
  • Codeforces Global Round 29 (Div. 1 + Div. 2) A~E
  • AI 低代码平台:不止于 “快”,解码技术融合的深层逻辑
  • 实用指南:【知识拓展Trip Five】寄存器
  • 计算机视觉(opencv)实战二十七——目标跟踪 - 教程
  • P8367 [LNOI2022] 盒
  • 蓝桥杯 2025 省 B 题:画展布置 - 题解笔记
  • 二维坐标下的运算
  • Polar2025秋季个人挑战赛web-writeup
  • Day4
  • 题解:P12751 [POI 2017 R2] 集装箱 Shipping containers
  • 弱网配置
  • 绘制金融集团监控大屏的地图demo
  • 实用指南:《原神助手》开源神器:游戏体验大升级
  • 9-25
  • AT_agc021_d [AGC021D] Reversed LCS
  • adb shell 常用文件命令
  • Java文件编程
  • 自我介绍与规划
  • 软件工程学习日志2025.9.25