一. pywinauto知识点总结
官方英文版文档网址:https://pywinauto.readthedocs.io/en/latest/index.html
1.1 pywinauto的安装与配置
<1>相关库文件的下载地址
pywinauto最新版本下载地址: https://github.com/pywinauto/pywinauto/releases
pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
comtypes下载地址:https://github.com/enthought/comtypes/releases
six下载地址:https://pypi.org/project/six/
Pillow下载地址:https://pypi.org/project/Pillow/2.7.0/
<2>安装相关库
法1.直接通过命令行安装
(安装pywin32,直接安装比在官网下载速度慢,但是如果大家python3和python2同时安装了,那么直接下载再安装,会报错:找不到符合要求的python版本)
安装pywin32,E:\soft\python3.6\Scripts>pip3 install pywin32
法2.通过setup.py文件安装(安装包放中文路径下,可能安装出错)
如安装comtypes, (如果是unpack的下载包,)安装方法,进入下载的安装包路径,用命令行python3 setup.py install安装
1.2 pywinauto的基本操作
<1>一个小练习快速上手 pywinauto基本操作
#_*_coding=utf-8_*_ import pywinauto from pywinauto.mouse import * from pywinauto.keyboard import * import time #1.运行记事本程序 app = pywinauto.Application().start('notepad.exe') #2.窗体选择 title_notepad = u'无标题-记事本' #3.选择一个菜单项 app[title_notepad].menu_select('帮助->关于记事本') time.sleep(3) #4.点击新弹出窗体的确定按钮 out_note=u'关于记事本' button_name_ok='确定' app[out_note][button_name_ok].click() #5.查看一个窗体含有的控件,子窗体,菜单 print(app[title_notepad].print_control_identifiers()) #-------------------无标题记事本的含有的控件,子窗体,菜单----------------- # Control Identifiers: # # Notepad - '无标题 - 记事本' (L8, T439, R892, B815) # ['无标题 - 记事本Notepad', 'Notepad', '无标题 - 记事本'] # child_window(title="无标题 - 记事本", class_name="Notepad") # | # | Edit - '' (L16, T490, R884, B807) # | ['无标题 - 记事本Edit', 'Edit'] # | child_window(class_name="Edit") # | # | StatusBar - '' (L16, T785, R884, B807) # | ['StatusBar', '无标题 - 记事本StatusBar', 'StatusBar 第 1 行,第 1 列'] # | child_window(class_name="msctls_statusbar32") # None #6.在记事本中输入一些文本 #[tips-> ctrl+点击鼠标左键快速查看被调用函数] app.title_notepad.Edit.type_keys('pywinauto works!\n',with_spaces=True,with_newlines=True) app.title_notepad.Edit.type_keys('hello word !\n',with_spaces=True,with_newlines=True) #7.选择编辑菜单->编辑时间/日期 # app[title_notepad].menu_select('编辑->时间/日期(&d)') #8.连接已运行程序 #如连接微信 借助spy++找到运行程序的handle app1=pywinauto.Application(backend='uia').connect(handle=0x00320830) #9.查看运行窗口窗体名称 print(app1.window()) print(app1['Dialog'].print_control_identifiers()) # Dialog - '微信' (L968, T269, R1678, B903) # ['微信Dialog', 'Dialog', '微信'] # child_window(title="微信", control_type="Window") # | # | Pane - 'ChatContactMenu' (L-10000, T-10000, R-9999, B-9999) # | ['ChatContactMenu', 'ChatContactMenuPane', 'Pane', 'Pane0', 'Pane1'] # | child_window(title="ChatContactMenu", control_type="Pane") # | | # | | Pane - '' (L-10019, T-10019, R-9980, B-9980) # | | ['', 'Pane2', '0', '1'] # | # | Pane - '' (L948, T249, R1698, B923) # | ['2', 'Pane3'] # None #10.通过路径去打开一个已有程序 #11.鼠标控制 x=0 y=0 for<