首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >windows 桌面GUI自动化-1. pywinauto 环境准备

windows 桌面GUI自动化-1. pywinauto 环境准备

作者头像
上海-悠悠
发布于 2023-08-25 00:57:25
发布于 2023-08-25 00:57:25
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

前言

Pywinauto 是基于 Python 开发的,用于自动化测试的脚本模块,主要操作于 Windows 标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给 Windows 的对话框和控件。 官网地址https://pywinauto.readthedocs.io/en/latest/index.html 中文文档地址https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193035

环境准备

可以通过命令行安装pywinauto:

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

安装完成后,可以执行以下代码,检测是否正确安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pywinauto.application import Application

# 启动记事本
app = Application(backend="uia").start("notepad.exe")

执行后能正确打开记事本即可

可访问性技术(backend)

在启动应用程序之前,我们需确定使用哪种可访问性技术(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。

inspect 元素定位工具

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

inspect 教程https://learn.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects

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

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

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

“ 检查” 窗口包含几个主要部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
标题栏。显示“ 检查 ”窗口句柄 (HWND) 。
菜单栏。提供对检查功能的访问权限。
工具 栏。提供对检查功能的访问权限。
树视图。将 UI 元素的分层结构呈现为可用于在元素之间导航的树视图控件。
数据视图。显示所选 UI 元素的所有公开辅助功能属性。

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

一些类似的工具

Python tools

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

其他脚本语言工具

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

其他免费工具

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

商业工具

  • 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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境准备
  • 可访问性技术(backend)
  • inspect 元素定位工具
  • 一些类似的工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档