官方文档:https://pywinauto.readthedocs.io/en/latest/code/code.html
首先需要下个spy++lite,便于查看程序窗口属性
主要模块:pywinauto.application
创建对象:
app = application.Application()
启动程序:
app.start(cmd_line) -- 传入文件绝对路径(命令行运行方式)
连接应用程序
app.connect(path = r"c:\windows\system32\notepad.exe")
app.connect(process = 1110)
app.connect(handle = 0x010f0c) #connect替换了connect_
关闭程序
app[window_title].close() --窗口标题文本 #close替代了Close
窗口最大化
app[window_title].Maximize() --窗口标题文本 #maximize替代了Maximize
菜单点击
app.Notepad.MenuSelect(menu_name)
app[window_title].menu_select(menu_name) #menu_select替代了MenuSelect
输入字符
app.Notepad.type_keys(content)
app[window_title][eidt_title].TypeKeys(content) --编辑窗口标题
鼠标左击
app[window_title][button_title].click() #click替代了Click
app.window(title_re = window_title).window(title_re = button_title).click() #正则匹配title;window替代了Window_
鼠标右击
app[window_title][eidt_title].right_click() #right_click替代了RightClick
例
from pywinauto import application
#启动记事本并打开帮助菜单
app = application.Application()
app.start(r"C:\Windows\system32\notepad.exe")
app.Notepad.MenuSelect(u'帮助->关于记事本')
# app[u"无标题 - 记事本"].menu_select(u'帮助->关于记事本')
#定位窗口
about_dlg = app.window(title_re=u"关于",class_name="#32770")
# print(about_dlg) #pywinauto.application.WindowSpecification object
#
# #窗口控件 -- 打印窗口控件
about_dlg.print_control_identifiers()
#点击控件
# about_dlg[u"确定"].click()
button = app.window(title_re=u"关于").child_window(title_re=u"确定")
# button = app[u"关于记事本"][u"确定"]
button.click()
输入字符
# app[u"无标题 - 记事本"][u"Edit"].type_keys(u"wejdjsaf")
右键
# app[u"无标题 - 记事本"][u"Edit"].right_click()
安装流程
1,手动安装pyHook
根据python版本号下载对应pyHook
3.7
https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/pyHook-1.5.1-cp37-cp37m-win_amd64.whl
3.6
https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/pyHook-1.5.1-cp36-cp36m-win_amd64.whl
pip install pyHook的本地路径
2,pywin32
3,pip install PyUserInput
from pymouse import PyMouse
from pykeyboard import PyKeyboard
m = PyMouse()
# 1、获取鼠标当前位置
print(m.position())
# 2、按下鼠标不松开, button=1(左) | 2(右) | 3(中)
m.press(5,5)
# 3、拖拽到x,y
m.drag(200,200)
# 4、移动
m.move(500,500)
# 5、松开指定位置的鼠标,button
# m.release(x,y)
# 6、点击button n次
m.click(5,5,button=1,n=2)
# 7、滚动scroll(self, vertical=None, horizontal=None, depth=None)
m.click(150,150,1,1)
m.scroll(vertical=-1)
k = PyKeyboard()
# 1、点击功能键
k.tap_key(k.function_keys[5])
# 2、按住给定的字符键
k.press_key("t")
k.press_keys(["r","t"])
# 3、联合按键:全选--按住control同时点击a
k.press_key(k.control_key)
k.tap_key("a")
# 4、释放按键
k.release_key(k.control_key)
# 5、输入较长字符串
k.type_string("afjiwaernfm,dmskame")