PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)
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参考代码
# -*- 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参考代码
# -*- 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()相同的参数,例如:
dlg = app.window(title_re="Page Setup", class_name="#32770")
如果对话框的标题很长 - 那么输入的属性访问可能会很长,在这种情况下通常更容易使用
app.window(title_re=".*部分标题.*")
获取当前应用全部windows
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参考代码
# -*- 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端应用程序窗口基本操作非常简单,时间不早了今天就分享到这里,感谢你耐心地阅读!
PC端自动化测试实战教程-5-pywinauto 操作PC端应用程序窗口 - 下篇(详细教程)的更多相关文章
- 《手把手教你》系列进阶篇之3-python+ selenium自动化测试 - python几种骚操作你都知道吗?(详细教程)
1. 简介 这篇文章主要是给小伙伴或者童鞋们介绍和分享 python几种骚操:读取配置文件.获取根目录的相对路径.获取系统时间和格式化时间显示.字符串切割等等操作.为后边的自动化框架打下一个结实的基础 ...
- 《手把手教你》系列进阶篇之4-python+ selenium自动化测试 - python几种超神操作你都知道吗?(详细教程)
1. 简介 今天分享和讲解的超神操作,对于菜鸟来说是超神的操作,对于大佬来说也就是几个简单方法的封装和调用.这里讲解和分享这部分主要是为了培养小伙伴们和童鞋们的面向对象的开发思维,对比这样做的好处让你 ...
- Java自动化测试框架-04 - TestNG之Test Method篇 - 道法自然,法力无边(详细教程)
简介 按照上一篇的计划,这一篇给小伙伴们分享一下测试方法. 一.设置参数 测试方法是可以带有参数的.每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递 ...
- Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)
简介 最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢.今天继续介绍testng的相关知识--工厂. 工厂允许你动态的创建测试.例如,假设 ...
- 《手把手教你》系列练习篇之9-python+ selenium自动化测试 -番外篇 - 最后一波啊!!!(详细教程)
1. 简介 本来上一篇就是练习篇的最后一篇文章了,但是有的小伙伴私下反映说是做了那么多练习,没有一个比较综合的demo练练手.因此宏哥在这里又补存了一些常见的知识点进行练习,在文章最后也通过实例给小伙 ...
- 《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
1.简介 经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法.一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释 ...
- Qt5 项目程序打包发布 详细教程
概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装文件. ...
- 关于《Python自动化测试实战》
作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员.任何一门技术涵盖的知识点都是非常广泛的,可能 ...
- appium自动化测试实战
一.Appium的介绍 Appium是一款开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用. 1. 使用appium进行自动化测试的好处 Appium在不同平台 ...
- WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...
随机推荐
- kubesphere应用系列(二)部署有状态服务redis
前言 在 Kubernetes 中,服务(Service)可以被分为有状态服务和无状态服务,个人认为的区别: 无状态服务是指不依赖于任何持久化状态的服务.它们通常是将请求处理为独立.无关的事务,并且在 ...
- LCD显示器的接口协议
简介LCD的接口有多种,常用的LCD的连接方式有如下几种:MCU(MPU)模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式,MIPI模式,LVDS模式,TTL模式,EDP模式. ...
- QT5笔记: 15. 其他显示组件的常用功能
其他显示组件的常用功能 代码 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget ...
- Linux - top相关的快捷键
q:退出top命令窗口(quit). k:按照进程ID终止(kill)一个进程.例如,你可以输入k,然后输入进程的PID来终止它. r:重新设置进程的优先级.输入r后,你可以输入新的优先级值. f:进 ...
- Java01 - Scanner对象
简介 之前我们学的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入.java.util.Scanner是Java5的新特征,我们可以通过Scanner ...
- DOS使用技巧整理 [典型案例分享]
最早于2008年系统地学习MS-Dos,当时刚初中毕业.从小深受父亲影响,对电脑的技术比较感兴趣,特别是对DOS.随着学习得不断深入,接触了大量数字媒体软件.框架还有编程界的知识,发现DOS有不可磨灭 ...
- day1-简介与下载
为什么创造了golang? 计算机硬件技术更新频繁,不能合理运用多核多CPU的的优势 目前市场缺乏一款简洁高效的编程语言 c++.c运行速度很快,但存在内存泄漏的问题 go语言特点 既做到了静态语言的 ...
- Ubuntu Nvidia driver驱动安装(新)
前言 英伟达更新了安装驱动的方式,更新一下文档 旧文:Ubuntu Nvidia driver驱动安装及卸载 下载官方驱动安装 1.安装驱动前一定要更新软件列表和安装必要软件.依赖(必须) sudo ...
- .NET周刊【3月第2期 2025-03-09】
国内文章 记一次.NET内存居高不下排查解决与启示 https://www.cnblogs.com/huangsheng/p/18731382 本文讲述了一个ASP.NET Core gRPC服务迁移 ...
- 证件用蓝底、红底、白底照片RGB颜色值
蓝色: R:67 G:142 B:219: 红色: R:255 G:0 B:0: 白色: R:255 G:255 B:255. * PS:仅供参考,如有特殊要求,请按照相应要求调整色值.