Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)

PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)

作者头像
北京-宏哥
发布于 2025-05-09 00:04:59
发布于 2025-05-09 00:04:59
32401
代码可运行
举报
文章被收录于专栏:北京宏哥北京宏哥
运行总次数:1
代码可运行

1.简介

上一篇宏哥主要讲解和介绍了如何获取PC端应用程序窗口信息和如何连接窗口对其进行操作的常用的几种方法。今天宏哥接着讲解和分享一下窗口的基本操作:最大化、最小化、恢复正常、关闭窗口、获取窗口状态和获取窗口坐标。以及窗口的其他打开方法和选择方法。

2.窗口的基本操作

窗口的一些基本操作方法:

  • 最大化 :w.maximize()
  • 最小化 :w.minimize()
  • 恢复正常 :w.restore()
  • 关闭窗口: w.close()
  • 获取窗口状态: w.get_show_state() 返回1 最大化, 0正常,2最小化
  • 获取窗口坐标: w.rectangle() 返回 (L35, T149, R1544, B913)
2.1代码设计
2.2参考代码
代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
# -*- coding:utf-8 -*-

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

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-31
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口(详细教程)-下篇
'''

# 3.导入模块
from pywinauto import Application
import time

# 通过窗口打开
app = Application('uia').start("D:/software/Notepad/Notepad++/notepad++.exe")
app = Application('uia').connect(class_name="Notepad++")
# win = app['窗口的标题']
win = app['新文件1 - Notepad++']
win.type_keys("北京-宏哥")
time.sleep(2)
win.maximize()   # 最大化
time.sleep(2)
win.restore()    # 恢复
time.sleep(2)
win.minimize()   # 最小化
# win.close()      # 关闭
2.3运行代码

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

2.运行代码后电脑端的动作(启动记事本)。如下图所示:

3.窗口打开方法

前面是通过窗口的的标题操作打开的窗口,再介绍一个最简单的方法是top_window(),例如:宏哥这里还是演示打开notepad++编辑器。

3.1代码设计
3.2参考代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-

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

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-31
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口(详细教程)-下篇
'''

# 3.导入模块
from pywinauto import Application
import time

from pywinauto import Application
import time
app = Application('uia').start("D:/software/Notepad/Notepad++/notepad++.exe")
# time.sleep(3)
dlg = app.top_window()
print(dlg)
3.3运行代码

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

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

以上方法将返回具有应用程序顶级窗口的最高顺序的窗口。

注意: 它返回的是是应用程序的顶级窗口,如果窗口有覆盖的情况,那么你可以使用与传递给findwindows.find_windows()相同的参数,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dlg = app.window(title_re="Page Setup", class_name="#32770")

如果对话框的标题很长 - 那么输入的属性访问可能会很长,在这种情况下通常更容易使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.window(title_re=".*部分标题.*") 

获取当前应用全部windows

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dialogs = app.windows() 

这将返回应用程序的所有可见,启用的顶级窗口的列表。

总结:推荐使用 app.window(title_re="xxx") 方法操作指定窗口。

4.小结

 4.1遇到的坑

在演示的过程中,想必细心的小伙伴或者童鞋们已经发现宏哥代码在窗口最小化之后,将窗口关闭的代码注释掉了,这是因为宏哥在演示的时候,直接报错:pywinauto.findbestmatch.MatchError: Could not find '新文件1 - Notepad++' in 'dict_keys([])',本来宏哥觉得最小化之后,加上一段恢复窗口,再关闭就可以了,结果还是报一样的错误。因为一时没有好的解决办法,由于时间的关系,宏哥就将那段关闭窗口的代码注释掉了。如下图所示:

解决办法:经过查找资料和百度还是没有什么好的解决办法,宏哥突然想到之前文章中提到过的访问技术是否正确,uia报错,就换win32。否则就会报错找不到元素。因此宏哥抱着试一下心态,结果成功了。

4.1.1代码设计
4.1.2参考代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-

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

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-31
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口(详细教程)-下篇
'''

# 3.导入模块
from pywinauto import Application
import time

# 通过窗口打开
app = Application('win32').start("D:/software/Notepad/Notepad++/notepad++.exe")
app = Application('win32').connect(class_name="Notepad++")
# win = app['窗口的标题']
win = app['新文件1 - Notepad++']
win.type_keys("北京-宏哥")
time.sleep(2)
win.maximize()   # 最大化
time.sleep(2)
win.restore()    # 恢复
time.sleep(2)
win.minimize()   # 最小化
win.restore()    # 恢复
win.close()      # 关闭
4.1.3运行代码

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

2.运行代码后电脑端的动作(正常运行,由告警是32位和64位python的告警)。如下图所示:

4.2pywinauto 中的uia是什么意思?

在pywinauto库中,uia指的是UI Automation,这是Windows操作系统提供的一种技术框架,用于实现用户界面(UI)的自动化测试和辅助功能访问。UI Automation是微软从Windows Vista开始引入的核心技术,旨在为所有UI元素提供一致的编程接口,无论这些元素是由何种技术(如Win32、WPF、UWP等)实现的。

在pywinauto中,通过指定backend="uia",用户可以选择使用UI Automation作为底层引擎来与应用程序的UI元素进行交互。这为自动化测试提供了更广泛的支持,尤其是在处理现代Windows应用(尤其是使用WPF和UWP技术构建的应用)时更为有效。UI Automation后端相比传统的win32后端,提供了更丰富和高级的元素属性、控制模式(Control Patterns)以及事件支持,使得自动化脚本可以更加灵活和强大。

使用UI Automation后端,开发者可以更容易地定位和操作UI元素,如获取元素的属性、模拟鼠标和键盘操作、监听UI事件等,这对于创建复杂的自动化测试场景尤其有用。

好了,关于 操作PC端应用程序窗口基本操作非常简单,时间不早了今天就分享到这里,感谢你耐心地阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
上一篇宏哥主要讲解和介绍了如何获取PC端应用程序窗口信息和如何连接窗口对其进行操作的常用的几种方法。今天宏哥接着讲解和分享一下窗口的基本操作:最大化、最小化、恢复正常、关闭窗口、获取窗口状态和获取窗口坐标。以及窗口的其他打开方法和选择方法。
北京-宏哥
2025/01/22
5930
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
windows 桌面GUI自动化-3. pywinauto 操作指定window窗口
pywinauto 操作GUI应用程序上的元素,需先找到指定窗口,基于窗口查找框架再操作。
上海-悠悠
2023/08/25
4K0
windows 桌面GUI自动化-3. pywinauto 操作指定window窗口
PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
经过上一篇的学习、介绍和了解,pywinauto的强大,不言而喻吧!宏哥讲解和分享的是电脑自带和安装的应用程序。有些小伙伴或者童鞋们已经迫不及待地私信宏哥,如果在电脑中这个应用程序已经启用了,我如何去启动这个已经启动的应用程序呢?各位别急,宏哥今天就会讲解和分享如何启动PC端已经启动的应用程序。
北京-宏哥
2025/01/20
3580
PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 - 上篇(详细教程)
经过上一篇的学习、介绍和了解,想必小伙伴或者童鞋们,已经见识到pywinauto的强大了,今天继续介绍pywinauto,上一篇已经可以打开计算器了,这里宏哥在提供其他方法进行打开计算器和非电脑自带程序。pywinauto 可以启动电脑自带的应用程序,也可以启动电脑安装的应用程序。
北京-宏哥
2025/01/17
2890
PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 - 上篇(详细教程)
PC端自动化测试实战教程-4-pywinauto 操作PC端应用程序窗口 - 上篇(详细教程)
前几篇通过宏哥的讲解和分享,已经知道如何将PC端的应用程序启动,以及如何连接已启动的应用程序,那么启动和连接上之后呢?不用说当然是操作应用程序了,怎么操作呢?请听宏哥给你娓娓道来,所以今天主要是讲解和分享一下如何操作PC端应用程序的窗口。
北京-宏哥
2025/01/21
8940
PC端自动化测试实战教程-4-pywinauto 操作PC端应用程序窗口 - 上篇(详细教程)
pywinauto桌面应用自动化入门篇
本案例因为start方法无法启动应用程序,所以我这里使用了os.system去启动的应用程序
懿曲折扇情
2022/10/28
6.8K0
pywinauto桌面应用自动化入门篇
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
其实前边的文章宏哥已经在控制台打印过控件菜单树结构,只是没有将其保存到文件中。只需要一个方法即可。在pywinauto中可以使用 print_control_identifiers() 方法打印控件菜单树结构,这对我们查找控件非常方便。宏哥今天将其单独拎出来是因为Windows10系统和Windows11系统会有一个坑,而且宏哥掉里边了,查了好多资料都没有找到解决办法,最后还好通过自己各种尝试将坑填平,成功爬出来了。其实前边已经遇到了打开记事本最后替换成了notepad++。今天跟随宏哥一步步入坑,然后再一步步填坑,最后成功解决。
北京-宏哥
2025/05/21
2760
PC端自动化测试实战教程-6-pywinauto 打印和保存控件菜单树结构之ElementNotFoundError(详细教程)
Pywinauto之Windows UI 自动化1
前言,公司要搭建自动化测试环境,涉及到对设备软件的烧录操作,在网上找了些资料,发现pywinauto这个python库,能很好的支持PC端跑自动化,为此,记录下学习过程
用户6367961
2019/09/29
9.2K1
Pywinauto之Windows UI 自动化1
PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)
之前总有人在群里或者私信留言问:Windows系统安装的软件如何自动化测试呢?因为没有接触过或者遇到过,所以说实话宏哥当时也不清楚怎么实现,怎么测试。然而在一次偶然的机会接触到了Python的一个模块说是它可以实现Microsoft Windows GUI自动化测试,宏哥就想试一下是不是可以实现了,于是就边学习边记录供小伙伴或者童鞋们学习参考。
北京-宏哥
2025/01/13
4K0
PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)
pywinauto教程
转:pywinauto教程https://blog.csdn.net/weixin_40161673/article/details/83246861
墨文
2020/02/28
8.7K0
pywinauto教程
PC端自动化测试实战教程-7-pywinauto等待方法大集合 (详细教程)
经过上一篇的学习和讲解想必小伙伴或者童鞋们已经意识到等待的重要性了吧。宏哥在上一篇中在start()后,加入适当的等待时间(如time.sleep()),让应用程序有足够的时间初始化窗口和UI元素。之前我们在做web和app的ui自动化过程中,常用到等待机制,那PC端自动化有这个方法吗?答案是肯定的,python这么强大,肯定是有方法的。今天就跟随宏哥来一起看一下PC端自动化是如何等待的。应用程序行为通常不稳定,您的脚本需要等待,直到出现新窗口或关闭/隐藏现有窗口。 pywinauto可以隐式地(默认超时)灵活地等待对话框初始化,或者明确地使用专用方法/函数来帮助您使代码更容易和更可靠。
北京-宏哥
2025/05/28
3320
PC端自动化测试实战教程-7-pywinauto等待方法大集合 (详细教程)
聊聊 PC 端自动化最佳方案 - Pywinauto
有小伙伴后台给我留言,说「 pywinauto 」作为 WinAppDriver 的替代方案,也能完美完成 PC 端的自动化
AirPython
2021/08/27
2.9K0
聊聊 PC 端自动化最佳方案 - Pywinauto
PC端自动化测试(一)
PC端自动化测试(一) pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API A set of Python modules to auto
zx钟
2020/03/26
4.3K0
windows 桌面GUI自动化- 8.pywinauto 获取控件属性和文本内容
上海-悠悠
2023/08/25
1.6K0
windows 桌面GUI自动化- 8.pywinauto 获取控件属性和文本内容
windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()
也可以通过print_ctrl_ids()方法 (另外一个print_control_identifiers() 功能一样)查看当前窗口下的控件
上海-悠悠
2023/08/25
3K0
windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()
PC 自动化测试入门 - pywinauto 上篇:初识
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/04/26
5.3K2
PC 自动化测试入门 - pywinauto 上篇:初识
Python结合Pywinauto 进行 Windows UI 自动化
https://blog.csdn.net/z_johnny/article/details/52778064
墨文
2020/02/28
5.2K0
windows 桌面GUI自动化- 9.pywinauto 操作 MenuItem 菜单项
```python from pywinauto import Application
上海-悠悠
2023/09/11
1.3K0
windows 桌面GUI自动化- 9.pywinauto 操作 MenuItem 菜单项
windows 桌面GUI自动化-6. pywinauto 操作弹出新窗口上按钮
上海-悠悠
2023/08/25
8360
windows 桌面GUI自动化-6. pywinauto 操作弹出新窗口上按钮
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.6K0
推荐阅读
相关推荐
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验