Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)

PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)

原创
作者头像
北京-宏哥
发布于 2025-01-13 00:33:19
发布于 2025-01-13 00:33:19
3.6K00
代码可运行
举报
运行总次数:0
代码可运行

1.简介

之前总有人在群里或者私信留言问:Windows系统安装的软件如何自动化测试呢?因为没有接触过或者遇到过,所以说实话宏哥当时也不清楚怎么实现,怎么测试。然而在一次偶然的机会接触到了Python的一个模块说是它可以实现Microsoft Windows GUI自动化测试,宏哥就想试一下是不是可以实现了,于是就边学习边记录供小伙伴或者童鞋们学习参考。

目前流行的自动化就是web,app,接口算是目前最主流的测试内容了,那么如果让做安装windows上的客户端自动化呢?是不是一脸懵?今天宏哥就给大家讲解和分享一下啊!!!

2.pywinauto 

pywinauto 是一个用于 Windows GUI 自动化的 Python 库。它允许你编写脚本来自动化 Windows 应用程序的操作,如点击按钮、输入文本、选择菜单项等。pywinauto 基于 pywin32 和 comtypes,提供了更高级和更易用的接口。

官网地址:https://pywinauto.readthedocs.io/en/latest/index.html

中文文档地址:https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193035

3.环境准备

3.1操作系统

1.宏哥的环境是Windows 11版本 64位系统(32位的同学自己想办法哦,当然了现在32位的一般很少见),如下图所示:

3.2Python版本

Python版本:python:3.7.2,如下图所示:

4.环境搭建

Pywinauto是一个强大的Python库,用于自动化Windows应用程序的界面操作。无论是进行GUI测试、数据采集还是自动化任务,Pywinauto都能提供便捷的解决方案。

4.1安装Python

首先我们要安装好Python,然后才能安装Pywinauto,原因就不用宏哥多说了吧!因为Pywinauto是Python的库,所有得现有父亲才有儿子。具体如何安装Python,宏哥在这里就不再赘述了,不会的小伙伴或者童鞋们可以看宏哥之前的文章:传送门 。

4.2安装Pywinauto

4.2.1方法一(推荐)

 1.和安装其他依赖库一样,直接使用命令安装即可。可能要稍等一会....只需要一条命令,命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pywinauto 

4.2.2方法二(推荐)

1.确保你已经成功安装Python和Pycharm编辑器,点击"File" -> "Settings" -> "Project" -> "Python Interpreter"在"Project lnterpreter"下,点击"Add"并在搜索栏中输入要导入的模块名称搜索pywinauto,然后点击“install”即可,如下图所示:

4.2.3方法三(不推荐)

在网站:https://github.com/pywinauto/pywinauto/releases 中下载最新的pywinauto,解压后,进入对应的目录中,cmd,然后运行命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python setup.py install

4.3验证是否安装成功Pywinauto

4.3.1导入对应库

1.Docs命令窗口

直接打开docs命令窗口输入python,进行导入对应的库,看是否报错,如下图所示:

2.Pycharm编辑器

打开Pycharm编辑器,在Python脚本中导入Pywinauto的必要模块,通常包括Applicationfindwindows,看是否报错,如下图所示:

安装前(红色报错),如下图所示:

安装后(红色报错消失),如下图所示:

4.3.2通过pip查看

通过pip list命令查看,如下图所示:

 到此,环境就搭建好了,是不是很简单哈,是不是so easy。其实很简单的,就是一句命令就可以了,今天说的有点多,有点啰嗦哈!!!

5.使用说明

安装好了之后,关于使用说明大家可以参照官方文档上的说明。

5.1可访问性技术(backend)

就是说在我们安装好Pywinauto之后,在启动应用程序之前,首先要确定哪种可访问性技术(pywinauto的backend)可以用于我们的应用程序,在windows上受支持的辅助功能技术有两种:

  • Win32 API (backend= “win32”) ,默认的backend, MFC、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序
  • MS UI Automation (backend=”uia”) , WinForms、WPF、商店应用程序、Qt5、浏览器

那么如何知道程序到底适用于那种backend? 可以借助于GUI对象检查工具来确定程序到底适用于那种backend。如果使用 inspect 的uia模式,可见的控件和属性更多的话,backend可选uia,反之,backend可选win32。

5.2inspect 元素定位工具

常用的一些元素定位工具: SPY++,用于WIN32 API。当SPY++可以显示所有的控件时,访问技术应该选择”win32”。 Inspect.exe:如果Inspect.exe的模式设置为UIA模式,可以比SPY++显示更多的控件,则访问技术应该选择”uia”。 py_inspect:支持win32和uia两种访问技术,是SWAPY的替代。 UISPY:支持uia访问技术。 SWAPY:只支持win32访问技术。

1.inspect 教程:https://learn.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects,如下图所示:

2.inspect.exe 是windows SDK 的一个内置工具,可以通过先安装Windows SDK,下载地址:https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ 如下图所示:

3.下载后在本机安装,Inspect.exe 位于 SDK 安装路径的 \bin\文件夹中。通常不需要以管理员身份运行它。如下图所示:

4.它可以单独复制出来,放在桌面使用。

5.2.1“检查”窗口

“检查”窗口有多个主要部分:

  • 标题栏。 显示“检查”窗口句柄 (HWND)。
  • 菜单栏。 提供对“检查”功能的访问。
  • 工具栏。 提供对“检查”功能的访问。
  • 树状视图。 将 UI 元素的分层结构呈现为树视图控件,可用于在元素之间导航。
  • 数据视图。 显示所选 UI 元素的所有公开辅助功能属性。

1.菜单栏中提供的命令也可以在工具栏中使用。 下图显示了“检查”查询记事本中的“编辑”菜单元素的 UI 自动化属性。如下图所示:

Screenshot that shows the user interface of the Inspect tool.
Screenshot that shows the user interface of the Inspect tool.

2.以下是宏哥操作微信时候,工具的一些展示和变化,如下图所示:

5.3一些类似的工具

5.3.1Python tools

  • PyAutoGui - 一个流行的跨平台库(具有基于图像的搜索,没有基于文本的控件操作)。
  • Lackey - Sikuli的纯Python替代品(基于图像模式匹配)。
  • AXUI - MS UI Automation API的一个包装器。
  • winGuiAuto - 另一个使用Win32 API的模块。

5.3.2其他脚本语言工具

  • (Perl) Win32::GuiTest
  • (Ruby) Win32-Autogui - Win32 API的包装器。
  • (Ruby) RAutomation - 有3个适配器:Win32 API,UIA,AutoIt。

5.3.3其他免费工具

  • (C#) Winium.Desktop - 一个年轻但很好的基于MS UI Automation的工具。
  • (C#) TestStack.White - 另一个很好的基于MS UI Automation的库,历史悠久。
  • AutoIt - 具有自己的类似Basic语言的免费工具(基于Win32 API,没有.NET计划)
  • AutoHotKey - 具有自己的脚本语言的原生C ++工具(.ahk)

5.3.4商业工具

5.4gui inspect tool全家桶

1.官方文档中推荐使用spy++和inspect来检查。宏哥专门整理了一下,放在github上了,关注宏哥的公众号发送:inspect,即可获取下载地址。有的人不知道公众号如何发送获取下载地址,经常是发私信。宏哥在这里也顺便演示一下,关注宏哥公众号后,点击“发消息”,然后输入内容发送关键字,即可获取。如下图所示:

 2.下载解压后的各种工具,如下图所示:

Spy++ (定位元素工具(win32))

Inspect(定位元素工具(uia))

UI Spy (定位元素工具)

Swapy(可简单生成pywinauto代码)

5.5如何判断程序的backend是’win32’还是’uia’呢?

目前大部分应用程序主窗口是“uia”,一般都是先用“uia',报错时再换成'win32'。这也是一种笨办法,二者选一,不是这个就是那个。

宏哥这里按官方推荐的介绍使用inspect来判断backend的类别,具体步骤如下:

1.下载上面github链接里的相关工具并打开,点击inspect左上角的下拉列表中切换到UI Automation,如下图所示:

2.然后鼠标点一下你需要测试的程序窗体,inspect就会显示相关信息。 下图为点击window文件夹的结果,inspect中显示了相关的信息,如下图所示。说明backend为uia。如下图所示:

3.相反,没有切换,点击任务管理器,拒绝访问,则为win32,如下图所示:

6.快速入门

宏哥这里以启动Windows自带的计算器为例,给各位小伙伴或者童鞋们来演示一下。

6.1代码设计

6.2参考代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-1-pywinauto 环境搭建(上)(详细教程)
'''

# 3.导入模块

from pywinauto import Application
from pywinauto import findwindows

#启动计算器
app = Application().start("calc.exe")
6.3运行代码

1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的动作(启动计算器)。如下图所示:

7.小结

本文介绍了Pywinauto的基本使用方法,包括安装、导入模块、启动应用程序、如何判断程序的backend是’win32’还是’uia’。通过掌握这些基本概念和技巧,小伙伴或者童鞋们可以利用Pywinauto轻松实现自动化Windows界面操作,提高工作效率。希望本文对你入门Pywinauto有所帮助!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
windows 桌面GUI自动化-1. pywinauto 环境准备
Pywinauto 是基于 Python 开发的,用于自动化测试的脚本模块,主要操作于 Windows 标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给 Windows 的对话框和控件。 官网地址https://pywinauto.readthedocs.io/en/latest/index.html 中文文档地址https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193035
上海-悠悠
2023/08/25
1.7K0
windows 桌面GUI自动化-1. pywinauto 环境准备
Pywinauto之Windows UI 自动化1
前言,公司要搭建自动化测试环境,涉及到对设备软件的烧录操作,在网上找了些资料,发现pywinauto这个python库,能很好的支持PC端跑自动化,为此,记录下学习过程
用户6367961
2019/09/29
9.1K1
Pywinauto之Windows UI 自动化1
聊聊 PC 端自动化最佳方案 - Pywinauto
有小伙伴后台给我留言,说「 pywinauto 」作为 WinAppDriver 的替代方案,也能完美完成 PC 端的自动化
AirPython
2021/08/27
2.8K0
聊聊 PC 端自动化最佳方案 - Pywinauto
PC端自动化测试(一)
PC端自动化测试(一) pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API A set of Python modules to auto
zx钟
2020/03/26
4.2K0
PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
经过上一篇的学习、介绍和了解,pywinauto的强大,不言而喻吧!宏哥讲解和分享的是电脑自带和安装的应用程序。有些小伙伴或者童鞋们已经迫不及待地私信宏哥,如果在电脑中这个应用程序已经启用了,我如何去启动这个已经启动的应用程序呢?各位别急,宏哥今天就会讲解和分享如何启动PC端已经启动的应用程序。
北京-宏哥
2025/01/20
3280
PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
上一篇宏哥主要讲解和介绍了如何获取PC端应用程序窗口信息和如何连接窗口对其进行操作的常用的几种方法。今天宏哥接着讲解和分享一下窗口的基本操作:最大化、最小化、恢复正常、关闭窗口、获取窗口状态和获取窗口坐标。以及窗口的其他打开方法和选择方法。
北京-宏哥
2025/05/09
2400
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
上一篇宏哥主要讲解和介绍了如何获取PC端应用程序窗口信息和如何连接窗口对其进行操作的常用的几种方法。今天宏哥接着讲解和分享一下窗口的基本操作:最大化、最小化、恢复正常、关闭窗口、获取窗口状态和获取窗口坐标。以及窗口的其他打开方法和选择方法。
北京-宏哥
2025/01/22
4910
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
PC端自动化测试实战教程-4-pywinauto 操作PC端应用程序窗口 - 上篇(详细教程)
前几篇通过宏哥的讲解和分享,已经知道如何将PC端的应用程序启动,以及如何连接已启动的应用程序,那么启动和连接上之后呢?不用说当然是操作应用程序了,怎么操作呢?请听宏哥给你娓娓道来,所以今天主要是讲解和分享一下如何操作PC端应用程序的窗口。
北京-宏哥
2025/01/21
7940
PC端自动化测试实战教程-4-pywinauto 操作PC端应用程序窗口 - 上篇(详细教程)
PC 自动化测试入门 - pywinauto 上篇:初识
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/04/26
4.7K2
PC 自动化测试入门 - pywinauto 上篇:初识
pywinauto,一款Win自动化利器!
pywinauto是一个用于自动化Python模块,适合Windows系统的软件(GUI),可以通过Pywinauto遍历窗口(对话框)和窗口里的控件,也可以控制鼠标和键盘输入,所以它能做的事情比之前介绍的pysimplegui更多
派大星的数据屋
2024/06/04
4310
pywinauto,一款Win自动化利器!
pywinauto桌面应用自动化入门篇
本案例因为start方法无法启动应用程序,所以我这里使用了os.system去启动的应用程序
懿曲折扇情
2022/10/28
6.7K0
pywinauto桌面应用自动化入门篇
PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 - 上篇(详细教程)
经过上一篇的学习、介绍和了解,想必小伙伴或者童鞋们,已经见识到pywinauto的强大了,今天继续介绍pywinauto,上一篇已经可以打开计算器了,这里宏哥在提供其他方法进行打开计算器和非电脑自带程序。pywinauto 可以启动电脑自带的应用程序,也可以启动电脑安装的应用程序。
北京-宏哥
2025/01/17
2620
PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 - 上篇(详细教程)
pywinauto教程
转:pywinauto教程https://blog.csdn.net/weixin_40161673/article/details/83246861
墨文
2020/02/28
8.6K0
pywinauto教程
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
其实前边的文章宏哥已经在控制台打印过控件菜单树结构,只是没有将其保存到文件中。只需要一个方法即可。在pywinauto中可以使用 print_control_identifiers() 方法打印控件菜单树结构,这对我们查找控件非常方便。宏哥今天将其单独拎出来是因为Windows10系统和Windows11系统会有一个坑,而且宏哥掉里边了,查了好多资料都没有找到解决办法,最后还好通过自己各种尝试将坑填平,成功爬出来了。其实前边已经遇到了打开记事本最后替换成了notepad++。今天跟随宏哥一步步入坑,然后再一步步填坑,最后成功解决。
北京-宏哥
2025/01/23
2850
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
其实前边的文章宏哥已经在控制台打印过控件菜单树结构,只是没有将其保存到文件中。只需要一个方法即可。在pywinauto中可以使用 print_control_identifiers() 方法打印控件菜单树结构,这对我们查找控件非常方便。宏哥今天将其单独拎出来是因为Windows10系统和Windows11系统会有一个坑,而且宏哥掉里边了,查了好多资料都没有找到解决办法,最后还好通过自己各种尝试将坑填平,成功爬出来了。其实前边已经遇到了打开记事本最后替换成了notepad++。今天跟随宏哥一步步入坑,然后再一步步填坑,最后成功解决。
北京-宏哥
2025/05/21
2280
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
来聊聊桌面图形界面的自动化和采集
如今的计算机软件形态,已被 Web 占据大半,基本上我们能使用到的产品,都能由一个网站来提供服务。
州的先生
2021/07/20
2.4K0
windows GUI自动化怎么做
最近在搞SAP的自动化。因为公司没考虑预算,不能用RPA。 首先用SAP自带的录制工具,不太行,各种弹框没法处理。 思来想去,打算用python来整。先用tracker来录制,创建业务流程还好,但是一旦要处理弹框,上传附件,就有点吃力了。 然后用了python的一些库来对付。 pyperclip 剪切板 pymouse 鼠標操作 pykeyboard 鍵盤曹祖 win32com win32gui pyautogui pywinauto uiautomation pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等。 pythoncom是pywin32库的一部分,运行脚本后,即可通过键盘的上下左右键控制鼠标移动了 pyhook 監聽輸入操作 pynput这个库让你可以控制和监控输入设备 这些库各有千秋,让我分別道来。
赵云龙龙
2022/12/01
2.5K0
PC端自动化测试实战教程-7-pywinauto等待方法大集合 (详细教程)
经过上一篇的学习和讲解想必小伙伴或者童鞋们已经意识到等待的重要性了吧。宏哥在上一篇中在start()后,加入适当的等待时间(如time.sleep()),让应用程序有足够的时间初始化窗口和UI元素。之前我们在做web和app的ui自动化过程中,常用到等待机制,那PC端自动化有这个方法吗?答案是肯定的,python这么强大,肯定是有方法的。今天就跟随宏哥来一起看一下PC端自动化是如何等待的。应用程序行为通常不稳定,您的脚本需要等待,直到出现新窗口或关闭/隐藏现有窗口。 pywinauto可以隐式地(默认超时)灵活地等待对话框初始化,或者明确地使用专用方法/函数来帮助您使代码更容易和更可靠。
北京-宏哥
2025/05/28
2670
PC端自动化测试实战教程-7-pywinauto等待方法大集合 (详细教程)
推荐一款Windows自动化工具,一个强大的Python库!
在软件开发和测试领域,自动化工具扮演着至关重要的角色。特别是在Windows平台上,一个强大的自动化工具可以极大地提高开发效率和测试准确性。本文将详细介绍Pywinauto,这是一个专为Windows设计的Python库,用于实现图形用户界面(GUI)的自动化操作。
测试开发技术
2024/12/25
6740
推荐一款Windows自动化工具,一个强大的Python库!
Python结合Pywinauto 进行 Windows UI 自动化
https://blog.csdn.net/z_johnny/article/details/52778064
墨文
2020/02/28
5.1K0
推荐阅读
相关推荐
windows 桌面GUI自动化-1. pywinauto 环境准备
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档