PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)
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.和安装其他依赖库一样,直接使用命令安装即可。可能要稍等一会....只需要一条命令,命令如下:
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,然后运行命令如下:
python setup.py install
4.3验证是否安装成功Pywinauto
4.3.1导入对应库
1.Docs命令窗口
直接打开docs命令窗口输入python,进行导入对应的库,看是否报错,如下图所示:

2.Pycharm编辑器
打开Pycharm编辑器,在Python脚本中导入Pywinauto的必要模块,通常包括Application和findwindows,看是否报错,如下图所示:
安装前(红色报错),如下图所示:

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

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 自动化属性。如下图所示:

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商业工具
- WinRunner (http://www.mercury.com/us/products/quality-center/functional-testing/winrunner/)
- SilkTest (http://www.segue.com/products/functional-regressional-testing/silktest.asp)
- Many Others (http://www.testingfaqs.org/t-gui.html)
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参考代码
# -*- 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有所帮助!
PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)的更多相关文章
- Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)
win7(win10也适用)系统安装GPU/CPU版tensorflow Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程) 目录 2.配置 ...
- 区块链学习——HyperLedger-Fabric v1.0环境搭建详细教程
相对与v0.6版本来说,1.0版本改变较大,此处不多说,只是将小白自己搭建1.0环境的过程分享给大家.希望对大家能有所帮助! 这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版 ...
- 移动端自动化测试(一)appium环境搭建
自动化测试有主要有两个分类,接口自动化和ui自动化,ui自动化呢又分移动端的和web端的,当然还有c/s架构的,这种桌面程序应用的自动化,使用QTP,只不过现在没人做了. web自动化呢,现在基本上都 ...
- react 开发 PC 端项目(一)项目环境搭建 及 处理 IE8 兼容问题
步骤一:项目环境搭建 首先,你不应该使用 React v15 或更高版本.使用仍然支持 IE8 的 React v0.14 即可. 技术选型: 1.react@0.14 2.bootstrap3 3. ...
- [新手教程]windows 2003 php环境搭建详细教程(转)
对于windows服务器的php环境配置一直是是新人朋友的难题,也难倒了很多高手.这里分享一个新手教程,给那些建站新人使用.本教程来自朋友吴文辉的博客,欢迎大家有时间可以访问他的博客:吴文辉博客htt ...
- 区块链学习——HyperLedger-Fabric v0.6环境搭建详细教程
v0.6 的架构相对简单,适合作为实验或学习来使用. 一.环境准备 一台云服务器(笔者使用的是阿里云的1核-2GB内存) Go语言环境 Docker安装 docker-compose安装 二.环境搭建 ...
- LNMP环境搭建详细教程
之前有一篇博客写的是LAMP的环境搭建,今天来详细介绍一下另外一个模式——LNMP=Linux+Nginx+MySQL+PHP. 一.在Linux系统下nginx的安装过程,先到http://ngin ...
- Appium自动化(一)-window环境搭建详细教程
一.软件环境所需要运用的工具 1.JAVA1.8.1以上环境 2.AndroidSDK 3.Appium Desktop(appium servers) 4.Appium Client 5.Appiu ...
- Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)
目录 前言 第一步:安装Anaconda 1.下载和安装 2.配置Anaconda环境变量 第二步:安装TensorFlow-GPU 1.创建conda环境 2.激活环境 3.安装tensorflow ...
- Android安卓开发环境搭建详细教程
安装目录:步骤1 安装JDK步骤2 安装 Android SDK ----http://www.androiddevtools.cn/ 步骤3 安装Tomcat步骤4 安装Ant步骤5 安装Eclip ...
随机推荐
- Java基础总结大纲(一)
1.JVM.JRE.和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.说明:java是跨平台的而JVM不是跨平台的,正对的不同的语言 ...
- python爬虫利器之Playwright
Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium.Pyppeteer 等,都可以驱动浏览器进行各种自动化操作.它的功能也非常强大,对市面上的主 ...
- 自动化部署之Gitlab+Jenkins+Docker
总结自动发布流程: Gitlab+Jenkins+Docker 一般部署方式: 1.外挂方式: 就是将实际的代码挂载到宿主机上,docker中提供程序运行的环境, 这样的话只需要更新对应的代码就够了 ...
- Lua之基础篇
新到一家公司,接触有些业务竟然直接通过服务器,在nginx层面就完成了,主要是基于OpenResty和Lua来实现的.打算深入了解一下这门神奇的语言... 为了嵌入应用程序中,从而为应用程序提供灵活的 ...
- 渗透测试-Kioptix Level 1靶机getshell及提权教程
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无 ...
- 鸿蒙UI开发快速入门 —— part09: 应用级状态管理LocalStorage & AppStorage
1.说在前面的话 前面几个章节中介绍的装饰器(@State.@Props.@Link.@Provide.@Consume.@Observed.@ObjectLink)仅能在页面内,即一个组件树上共享状 ...
- 技术实践|数据迁移中GBK转UTF8字符集问题分析
导语:在国产化创新的大背景下,数据库迁移项目逐渐增多,在数据库迁移过程中,源数据库和目标数据库字符集有时会不同,这时如何进行字符集转换则成为了一个重要的问题,同时在转换过程中还需要确保数据的完整性和一 ...
- 实践解决:IDEA2022版本创建Maven项目时没有出现src目录
问题:IDEA创建Maven项目时没有出现src目录 创建Maven项目 新版本的IDEA创建是选用的是Maven Archetype,选择这个也是和Maven一样的.按照这样流程创建完成之后的的架构 ...
- Docker封装Java环境镜像(Alpine+OpenJDK)
在给Java程序封装镜像时,使用的基础镜像动辄上百M,还需要每次部署的时候挂载时区等问题,不如自己封装一个镜像,供之后使用. 这里使用Alpine Linux(3.9) 安装OpenJDK 1.8及部 ...
- PHP API接口数据简单快速的加密解密
php7.0版本以上不支持mcrypt_encryp函数进行加密的代码,加密方式改为openssl_encrypt 用自己私人的服务器来测试吧,99买阿里云 openssl_系列支持php5.3以上版 ...