pywinauto学习2:简单的自动化操作

from pywinauto import Application
import time

app = Application().start("notepad.exe")

# 窗体选择
title_notepad = u"无标题-记事本"
# app[title_notepad]
# 选择一个菜单项
app[title_notepad].menu_select("帮助->关于记事本")

time.sleep(2)

# 点击新弹出窗体的 确定按钮
out_note = u"关于记事本"
button_name_ok = u"确定"
app[out_note][button_name_ok].click()

# 查看一个窗体都有哪些控件,子窗体,菜单
# print(app[title_notepad].print_control_identifiers())

# 输入一些文字
app[title_notepad].Edit.type_keys("Pywinauto works!\n", with_spaces=True, with_newlines=True)
app[title_notepad].Edit.type_keys("hello world!\n", with_spaces=True, with_newlines=True)

# 选择编辑菜单的
app[title_notepad].menu_select("编辑->时间/日期")

app[title_notepad].maximize()    # 窗口最大化
app[title_notepad].minimize()    # 窗口最小化

以上是操作记事本的方法,在操作其他应用的时候还遇到了如下问题:

from pywinauto.application import Application

# a = r"C:\Thoth\ECGAIAnalysisSystem\EcgAIAnalysisSystem.exe"
# app = Application(backend="uia").start(a)
# 如上所写来运行的时候发现会有错误,原因是这个应用还关联着一些dll文件


# 所以先进入到应用所在的路径下,再运行
os.getcwd()
os.chdir(r'C:\Thoth\ECGAIAnalysisSystem')
EcgApp = "EcgAIAnalysisSystem.exe"
app = Application(backend="uia").start(EcgApp)

模拟鼠标操作:

import time
import pywinauto.mouse as mouse

# 移动鼠标
for i in range(20):
    x = i*10
    y = i*8
    mouse.move(coords=(x,y))
    time.sleep(0.5)

模拟键盘操作:

# 键盘自动输入
import time
import pywinauto.keyboard as kb
import pywinauto.mouse as mouse

# 发送键盘指令
# 打开命令行,输入脚本
# windows徽标键
kb.send_keys("{VK_LWIN}")
# cmd
kb.send_keys("cmd")

time.sleep(2)
# 回车
kb.send_keys("{VK_RETURN}")
time.sleep(2)
mouse.click(coords=(400, 400))  # 发现打开的cmd窗口不是当前窗口,所以用鼠标点击一下

# for /L %i in (1,1,100) do tree
# +对应Shift, ^对应Ctrl, %对应Alt
kb.send_keys("for /L +5i in +91,1,100+0 do tree", with_spaces=True)
kb.send_keys("{VK_RETURN}")

键盘对应值:

ESC键VK_ESCAPE (27)
回车键:VK_RETURN (13)
TAB键:VK_TAB (9)
Caps Lock键:VK_CAPITAL (20)
Shift键:VK_SHIFT (16)
Ctrl键:VK_CONTROL (17)
Alt键:VK_MENU (18)
空格键:VK_SPACE (32)
退格键:VK_BACK (8)
左徽标键:VK_LWIN (91)
右徽标键:VK_RWIN (92)
鼠标右键快捷键:VK_APPS (93)
Insert键:VK_INSERT (45)
Home键:VK_HOME (36)
Page Up:VK_PRIOR (33)
PageDown:VK_NEXT (34)
End键:VK_END (35)
Delete键:VK_DELETE (46)
方向键(←):VK_LEFT (37)
方向键(↑):VK_UP (38)
方向键(→):VK_RIGHT (39)
方向键(↓):VK_DOWN (40)
F1键:VK_F1 (112)
F2键:VK_F2 (113)
F3键:VK_F3 (114)
F4键:VK_F4 (115)
F5键:VK_F5 (116)
F6键:VK_F6 (117)
F7键:VK_F7 (118)
F8键:VK_F8 (119)
F9键:VK_F9 (120)
F10键:VK_F10 (121)
F11键:VK_F11 (122)
F12键:VK_F12 (123)
Num Lock键:VK_NUMLOCK (144)
小键盘0:VK_NUMPAD0 (96)
小键盘1:VK_NUMPAD1 (97)
小键盘2:VK_NUMPAD2 (98)
小键盘3:VK_NUMPAD3 (99)
小键盘4:VK_NUMPAD4 (100)
小键盘5:VK_NUMPAD5 (101)
小键盘6:VK_NUMPAD6 (102)
小键盘7:VK_NUMPAD7 (103)
小键盘8:VK_NUMPAD8 (104)
小键盘9:VK_NUMPAD9 (105)
小键盘。:VK_DECIMAL (110)
小键盘*:VK_MULTIPLY (106)
小键盘+:VK_ADD (107)
小键盘-:VK_SUBTRACT (109)
小键盘/:VK_DIVIDE (111)
Pause Break键:VK_PAUSE (19)
Scroll Lock键:VK_SCROLL (145)

补充: 

关于鼠标键盘的操作,我感觉使用pywinauto不是很方便,推荐使用pyautogui这个库

像键盘操作的话就变的很简单了,比如:

import pyautogui

#模拟输入信息
pyautogui.typewrite(message='Hello world!',interval=0.5)
#点击ESC
pyautogui.press('esc')
# 按住shift键
pyautogui.keyDown('shift')
# 放开shift键
pyautogui.keyUp('shift')
# 模拟组合热键
pyautogui.hotkey('ctrl', 'c')

更多关于pyautogui的内容看这篇帖子:

https://blog.csdn.net/weixin_43430036/article/details/84650938

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值