1. pywinauto后端(pywinauto’s backend,以下简称为backend)
使用pywinauto的第一步是确定应用使用了哪种backend,以下列举了两种backend:
- win32(默认backend)
MFC,VB6,VCL简单的WinForms控件和大多数旧的应用程序所使用。
- uia
WinForms,WPF,Store apps,Qt5,浏览器所使用。
若想更为准确地确定backend,可以使用辅助工具:
app = Application() app.start(cmd_line=r"c:\path\to\your\application -a -n -y --arguments", timeout=15) # timeout为可选参数,表示等待时间,当应用需要较长时间启动时,需要指定此参数
2.2 connect()
connect()用于应用已启动时,例如:
app = Application() # 通过进程号来连接应用 app.connect(process=2341) # 通过句柄来连接应用 app.connect(handle=0x010f0c) # 通过进程的可执行文件来连接应用 app.connect(path=r"c:\windows\system32\notepad.exe") # 通过应用窗口的一些参数来连接应用,具体参数参考:https://pywinauto.readthedocs.io/en/latest/code/pywinauto.findwindows.html#pywinauto.findwindows.find_elements app.connect(title_re=".*Notepad", class_name="Notepad")
3. Dialog
连接完应用后,需要获取一个dialog对象来进行自动化,获取方式有:
# 通过应用窗口的标题来获取dialog对象 dlg = app.Notepad # == dlg = app['Notepad'] # 通过top_window()来获取dialog对象 dlg = app.top_window() # 返回应用的最顶层窗口 # 通过应用窗口的一些参数来获取dialog对象,具体参数参考:https://pywinauto.readthedocs.io/en/latest/code/pywinauto.findwindows.html?highlight=findwindows.find_windows()#pywinauto.findwindows.find_windows dlg = app.window(title_re="Page Setup", class_name="#32770")
4. Control
自动化的基本操作单元是control对象,获取方式有:
app.dlg.control # == # 此方式采用最佳匹配模式,例如:app["记事本"]["记事本Edit"]等同于app["无标题 - 记事本"]["无标题 - 记事本Edit"] app['dlg']['control'] # app.dlg.print_control_identifiers()用于输出dialog下的所有control
4.1 Function
control中可用的function参考:https://pywinauto.readthedocs.io/en/latest/controls_overview.html