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

【 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”)适配不同框架开发的应⽤程序:

  • win32模式适⽤于传统MFC、VB6等旧架构
  • uia模式则⽀持现代WinForms、WPF、Qt5及浏览器等应⽤

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 项目)
    下方说明“每个项目独有一份环境,单独来管理所需要的库”,体现了虚拟环境的核心作用:

  • 虚拟环境是项目专属的“独立 Python 环境”,与全局环境、其他项目的虚拟环境完全隔离。
  • 图中 Test01 的虚拟环境里,只安装了 requests 库——这说明 Test01 项目仅需要 requests,因此只需在自己的虚拟环境中安装这一个库,无需依赖全局环境的所有库,也不会受其他库(如 pytest)的版本干扰。
  1. 右侧:虚拟环境(Test02 项目)
    Test02 的虚拟环境里安装了 pytestpywinauto 库——这说明 Test02 项目的依赖是 pytestpywinauto,它的虚拟环境与全局环境、Test01 的环境完全隔离,库的安装/版本仅服务于 Test02 自身。

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

  • 避免“全局环境库版本冲突”:比如项目 A 需要 requests==2.20,项目 B 需要 requests==3.0,虚拟环境可让两个项目各自用自己的版本。
  • 精简依赖:项目只需安装自身需要的库,无需承载全局环境的所有依赖,更轻量、可控。

六、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.dtcms.com/a/399929.html

相关文章:

  • 如何将ISO20000的SLA与服务器响应时间有效结合?
  • 贺福建舰电磁弹射上线
  • wordpress网站分享到朋友圈小项目加盟
  • 牛客:多项式输出
  • 构建一个支撑10万设备的虚拟电厂IoT平台
  • Linux 中,`pip install`与 `apt install`
  • 宁波优质网站制作哪家好晋中市科技馆网站建设
  • SPA中篇【德国篇】钢铁齿轮与数字神经:跨国汽配巨头SPA并购整合攻坚记
  • 十大拿货网站注册app短信验证码平台
  • 山东莱州市建设局网站广西住房城乡建设厅
  • 企业网站构建方案大数据营销系统软件
  • Mysql(二十二)——InnoDB页结构
  • 亮数据|智能IDE与爬虫MCP实战
  • 网站开发的前端到底是什么建设项目一次公示网站
  • 动态做网站丰台新乡网站建设
  • 建设企业网站服务器电商网站建设制作
  • Linux安全 | 防火墙工具 iptables 详解
  • Matlab通过GUI实现点云的最远点下采样(Farthest point sampling)
  • 品牌设计公司哪家好网站可以做多少优化关键词
  • RK3588+MCU机器人控制器解决方案
  • JavaScript内存泄漏与闭包详解:从原理到实践
  • ARM芯片架构之CoreSight Programmers‘ Model 深入解析
  • Video-XL-2论文阅读
  • 在网站建设工作会议上讲话网站安全管理制度
  • JAVA第一阶段结束喽后天更新第二阶段至于明天当然是练习时间回顾一下之前学的太良心了
  • 专业门户网站建设用流媒体做的电台网站
  • python(74) 调用dll文件
  • 国家关于网站信息建设管理文件郴州市人口
  • 温州市城市建设档案馆网站公司宣传册排版
  • redis的set集合的编码方式以及应用场景