Pywinauto是一组Python模块,使用它可以编写Python程序模拟对Windows窗口的操作,方便地发送鼠标和键盘事件并控制对话框及其组件。
安装
pip install pywinauto
写在前面
使用Pywinauto操作窗口应用之前,你需要知道该应用允许使用哪种访问技术进行访问,即pywinauto的backend模式。
目前Windows系统下被支持的访问技术主要有两种:
• Win32 API (backend="win32") - 是Windows下默认的访问技术
– MFC, VB6, VCL, 简单的WinForms 和大多数传统应用使用这种模式
• MS UI Automation (backend="uia")
– WinForms, WPF, Windows商店应用, Qt5, 浏览器等使用此模式
操作过程
下面以windows自带程序notepad作为例子,介绍一下Pywinauto的操作过程。注:notepad.exe应使用win32模式。
1. 初始化,本例我们使用uia模式
from pywinauto.application import Application
#默认win32模式
app = Application()
#或者使用UIA模式
app = Application(backend="uia")
2. 连接应用或者启动应用
#启动应用
app.start("Notepad.exe")
#或者连接已打开的应用
app.connect("Notepad.exe")
3. 模拟操作
#模拟键盘输入字符
app.UntitledNotepad.Edit.type_keys("this is an example.{HOME}", with_spaces=True)
#模拟选择菜单
app.UntitledNotepad.menu_select("Edit -> Replace")
#模拟对话框输入
app.UntitledNotepad.Replace.Edit0.set_text("this")
app.UntitledNotepad.Replace.Edit2.set_text("This")
#模拟对话框按钮点击
app.UntitledNotepad.Replace.ReplaceAll.click()
app.UntitledNotepad.Replace.Cancel.click()
小结
使用Pywinauto可以自动启动或联接应用程序,模拟鼠标,键盘操纵,菜单、按钮点击等用户输入行为,非常方便我们进行程序的自动化测试,以及对windows程序的自动化操作。