【GUI 自动化测试】认识自动化测试 文章目录1. 为什么要做 GUI 自动化1.1 GUI 自动化的意义1.2 GUI 自动化适用场景2. 为什么选择 pywinauto2.1 pywinauto 的优势2.2 pywinauto 的局限性3. 安装 pywinauto4. 安装 UI 对象检查工具5. GUI 自动化简单示例1. 为什么要做 GUI 自动化1.1 GUI 自动化的意义在软件测试过程中有许多重复性的测试用例需要执行例如对软件的各种基本功能进行验证。如果手动测试测试人员需要不断地重复相同的操作步骤这不仅耗时而且容易出错。而 GUI 自动化测试工具可以在短时间内快速执行大量重复的测试用例并且能够始终按照预设的逻辑和步骤进行操作从而极大地提高了测试效率。通过 GUI 自动化测试可以减少对人力的依赖。原本需要多名测试人员花费数小时甚至数天才能完成的测试工作现在只需编写好自动化测试脚本由自动化测试工具在规定时间内完成这样可以将测试人员从繁琐的重复性工作中解放出来在一定程度上降低了人力成本。1.2 GUI 自动化适用场景GUI 自动化适用于各种需要对图形用户界面进行重复性、一致性测试的场景尤其在验证软件功能的稳定性、正确性和用户体验方面发挥着重要作用。在软件开发的各个阶段从集成测试到验收测试它都可以帮助测试人员快速发现潜在问题如界面元素是否正常显示、交互是否流畅、功能是否按预期工作等从而确保软件质量。GUI 自动化可以模拟不同用户环境下的操作测试其兼容性和稳定性。此外在进行大规模测试时它能显著提高测试效率减少人力成本快速提供反馈支持持续集成和持续交付加速软件开发周期。总之GUI 自动化适用于需要高效、准确、重复测试GUI应用程序的各种场景有助于提升软件质量、用户满意度和开发效率。需要注意的是尽管 GUI 自动化适用于上述场景但其成功依赖于界面元素的稳定性 —— 若 UI 频繁变动或涉及复杂交互维护成本可能陡增。2. 为什么选择 pywinautoPywinauto 是一款基于 Python 的跨平台 GUI 自动化库专门针对 Windows 桌面应用程序设计其核心能力在于通过模拟用户交互行为如鼠标点击、键盘输入实现对窗口、对话框及内部控件的精准定位与操作适用于自动化测试、批量任务处理及日常办公流程优化等场景。该库通过两种底层技术backend“win32” 和 backend“uia”适配不同框架开发的应用程序win32 模式适用于传统 MFC、VB6 等旧架构。uia 模式则支持现代 WinForms、WPF、Qt5 及浏览器等应用。2.1 pywinauto 的优势优势如下所示基于 PythonPython 语言简洁易学适合快速开发和维护。跨平台支持支持 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 这样的工具。示例Google Chrome 中打开的任何网页或基于 Web 的企业应用。2基于自定义渲染引擎的应用程序原因某些应用程序如使用 Flutter、React Native 或其他跨平台框架开发的应用可能使用自定义的渲染引擎这些引擎不会暴露标准的 Windows UI 自动化接口如 Win32 或 UIA。示例企微、某些使用 Flutter 开发的桌面应用。如何分辨什么是基于Web的应用程序、使用自定义渲染框架的应用程序3. 安装 pywinauto首先确保已安装 Python 环境推荐 3.7 或更高版本。接着创建一个新的文件夹以及虚拟 Python 环境然后安装 pywinauto# 指定版本号避免因为版本差异造成其他问题pipinstallpywinauto0.6.9结果如下所示安装完成后可以通过以下命令验证安装pip list如果输出中包含 pywinauto则说明安装成功。4. 安装 UI 对象检查工具如何进行元素定位打开页面开发者工具可以直接进行元素定位定位到元素之后才能对指定元素进行一系列的操作对于GUI自动化也是一样要想对界面的元素进行操作我们得先会 “找元素”而找元素我们需要用 UI 对象检查工具UI 对象检查工具有很多诸如 Spy、Inspect.exe、UISpy这些工具基本都长得一样且操作上基本无差这里统一使用 UISpy 工具来进行 UI 对象检查。UISpy 是一款由微软提供的工具专门用于 UI 自动化测试。它允许测试人员查看应用程序的 UI 自动化模型包括控件树、属性和事件。 UISpy 特别适用于编写 UI 自动化脚本因为它提供了一个可视化的界面来帮助测试人员选择 UI 元素并且可以模拟用户对这些 UI 元素的操作。那么如何分辨是否能用 pywinauto 进行自动化测试的应用程序呢应用程序可以通过 UI 对象检查工具定位到元素说明该元素的实现是支持传统 Windows 原生应用框架而无法识别的元素则属于不能用 pywinauto 进行自动化测试的例如企微5. GUI 自动化简单示例示例打开电脑自带记事本输入内容并保存文件。importtimefrompywinauto.applicationimportApplication# 1. 启动应用程序Application(backenduia).start(notepad.exe)time.sleep(2)# 等待 2 秒让记事本完全打开# 2. 精确连接到刚刚打开的“无标题 - 记事本”appApplication(backenduia).connect(title无标题 - 记事本)# 3. 获取窗口对象直接获取该进程的顶层窗口防止标题对不上notepadapp.top_window()# 4. 操作控件在 Win10 的 Edit 控件中输入文本notepad.Edit.type_keys(Hello, Pywinauto!,with_spacesTrue)print(输入成功!\n)# 5. 关闭应用程序time.sleep(1)# 稍微停顿一下让你看清文字输入进去了notepad.close()结果如下所示