pywinauto和PyUserInput实现windows程序自动化

一、pywinauto

官方文档: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()

 

二、PyUserInput

安装流程

    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")

 

 

你可能感兴趣的:(Python学习)