一.简介

1.之前总有人在群里或者私信留言问:Windows系统安装的软件如何自动化测试呢?

2.因为没有接触过或者遇到过,所以说实话当时也不清楚怎么实现,怎么测试
2.1.然而在一次偶然的机会接触到了Python的一个模块说是它可以实现Microsoft Windows GUI自动化测试

3.目前流行的自动化就是web,app,接口算是目前最主流的测试内容,那么如果让做安装windows上的客户端自动化呢?

二.pywinauto

1.pywinauto是用于Windows GUI自动化的Python库

2.它允许编写脚本来自动化Windows应用程序的操作,如点击按钮、输入文本、选择菜单项等

3.pywinauto基于pywin32和comtypes,提供了更高级和更易用的接口
4.官网地址:https://pywinauto.readthedocs.io/en/latest/index.html

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

三.环境准备

1.操作系统
1.1.环境是Windows 11版本 64位系统(32位的同学想办法哦,当然了现在32位的一般很少见)

在这里插入图片描述

2.Python版本
2.1.Python版本:python:3.7.2

在这里插入图片描述

四.环境搭建

1.Pywinauto是强大的Python库,用于自动化Windows应用程序的界面操作

1.1.无论是进行GUI测试、数据采集还是自动化任务,Pywinauto都能提供便捷的解决方案
2.安装Python
2.1.首先要安装好Python,然后才能安装Pywinauto!因为Pywinauto是Python的库
3.安装Pywinauto
3.1.方法一(推荐)
3.1.1.直接使用命令安装即可:pip install pywinauto 

在这里插入图片描述

3.2.方法二(推荐)
3.2.1.确保已经成功安装Python和Pycharm编辑器

3.2.1.1.点击"File" -> "Settings" -> "Project" -> "Python Interpreter"在"Project lnterpreter"下

3.2.1.2.点击"Add"并在搜索栏中输入要导入的模块名称搜索pywinauto,然后点击“install”即可

在这里插入图片描述

3.3.方法三(不推荐)
3.3.1.在网站:https://github.com/pywinauto/pywinauto/releases,中下载最新的pywinauto

3.3.1.1.解压后,进入对应的目录中,cmd,然后运行命令如下:python setup.py install
4.验证是否安装成功Pywinauto
4.1.导入对应库
4.1.1.Docs命令窗口:直接打开docs命令窗口输入python,进行导入对应的库,看是否报错

在这里插入图片描述

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

在这里插入图片描述

4.2.1.2.安装后(红色报错消失)

在这里插入图片描述

4.3.通过pip查看:通过pip list命令查看

在这里插入图片描述

五.使用说明

1.可访问性技术(backend)
1.1.就是说在安装好Pywinauto后,在启动应用程序之前,首先要确定哪种可访问性技术(pywinauto的backend)可以用于应用程序
1.2.在windows上受支持的辅助功能技术有两种
1.2.1.Win32 API (backend= “win32”) :默认的backend, MFC、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序
1.2.2.MS UI Automation (backend=”uia”) : WinForms、WPF、商店应用程序、Qt5、浏览器
那么如何知道程序到底适用于那种backend? 可以借助于GUI对象检查工具来确定程序到底适用于那种backend

如果使用 inspect 的uia模式,可见的控件和属性更多的话,backend可选uia,反之,backend可选win32
2.inspect 元素定位工具
2.1.常用的一些元素定位工具: SPY++,用于WIN32 API

2.2.当SPY++可以显示所有的控件时,访问技术应该选择”win32”
Inspect.exe:如果Inspect.exe的模式设置为UIA模式,可以比SPY++显示更多的控件,则访问技术应该选择”uia”

py_inspect:支持win32和uia两种访问技术,是SWAPY的替代

UISPY:支持uia访问技术

SWAPY:只支持win32访问技术
2.3.inspect教程:https://learn.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects

在这里插入图片描述

2.3.1.inspect.exe 是windows SDK的内置工具,可以通过先安装Windows SD

2.3.1.1.下载地址:https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ 

在这里插入图片描述

2.3.1.2.下载后在本机安装,Inspect.exe 位于SDK安装路径的 \bin\\文件夹中

2.3.1.2.1.通常不需要以管理员身份运行它

在这里插入图片描述

2.4.它可以单独复制出来,放在桌面使用
3.“检查”窗口
3.1.“检查”窗口有多个主要部分
标题栏:显示“检查”窗口句柄 (HWND)

菜单栏:提供对“检查”功能的访问

工具栏:提供对“检查”功能的访问

树状视图:将UI元素的分层结构呈现为树视图控件,可用于在元素之间导航

数据视图:显示所选UI元素的所有公开辅助功能属性
3.2.菜单栏中提供的命令也可以在工具栏中使用。

3.2.1.下图显示了“检查”查询记事本中的“编辑”菜单元素的 UI 自动化属性

在这里插入图片描述

3.3.以下是操作微信时候,工具的一些展示和变化

在这里插入图片描述

六.一些类似的工具

1.Python tools
1.1.PyAutoGui:一个流行的跨平台库(具有基于图像的搜索,没有基于文本的控件操作)

1.2.Lackey:Sikuli的纯Python替代品(基于图像模式匹配)

1.3.AXUI:MS UI Automation API的一个包装器

1.4.winGuiAuto:另一个使用Win32 API的模块
2.其他脚本语言工具
2.1.(Perl) Win32::GuiTest

2.2.(Ruby) Win32-Autogui:Win32 API的包装器

2.3.(Ruby) RAutomation:有3个适配器:Win32 API,UIA,AutoIt
3.其他免费工具
3.1.(C#) Winium.Desktop:一个年轻但很好的基于MS UI Automation的工具

3.2.(C#) TestStack.White:另一个很好的基于MS UI Automation的库,历史悠久

3.3.AutoIt:具有自己的类似Basic语言的免费工具(基于Win32 API,没有.NET计划)

3.4.AutoHotKey:具有自己的脚本语言的原生C ++工具(.ahk)
4.商业工具
4.1.WinRunner :http://www.mercury.com/us/products/quality-center/functional-testing/winrunner/

4.2.SilkTest: http://www.segue.com/products/functional-regressional-testing/silktest.asp

4.3.Many Others: http://www.testingfaqs.org/t-gui.html
5.gui inspect tool全家桶
5.1.官方文档中推荐使用spy++和inspect来检查

5.1.1.专门整理了一下,放在github上了,关注宏哥的公众号发送:inspect,即可获取下载地址

5.1.2.有的人不知道公众号如何发送获取下载地址,经常是发私信

5.1.3.在这里也顺便演示一下,关注x哥公众号后,点击“发消息”,然后输入内容发送关键字,即可获取

在这里插入图片描述

 5.2.下载解压后的各种工具

在这里插入图片描述

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

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

5.2.3.UI Spy (定位元素工具)

5.2.4.Swapy(可简单生成pywinauto代码)
6.如何判断程序的backend是’win32’还是’uia’呢?
6.1.目前大部分应用程序主窗口是“uia”,一般都是先用“uia',报错时再换成'win32'

6.2.这也是一种笨办法,二者选一,不是这个就是那个
6.3.这里按官方推荐的介绍使用inspect来判断backend的类别
6.3.1.下载上面github链接里的相关工具并打开,点击inspect左上角的下拉列表中切换到UI Automation

在这里插入图片描述

6.3.2.然后鼠标点一下你需要测试的程序窗体,inspect就会显示相关信息。

6.3.2.1.下图为点击window文件夹的结果,inspect中显示了相关的信息,如下图所示说明backend为uia

在这里插入图片描述
在这里插入图片描述

6.3.3.相反,没有切换,点击任务管理器,拒绝访问,则为win32

在这里插入图片描述

七.快速入门

1.这里以启动Windows自带的计算器为例,给各位小伙伴或者童鞋们来演示一下
2.代码设计
# -*- coding:utf-8 -*-

from pywinauto import Application
from pywinauto import findwindows

#启动计算器
app = Application().start("calc.exe")
3.运行代码,右键Run'Test',就可以看到控制台输出

在这里插入图片描述

4.运行代码后电脑端的动作(启动计算器)

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐