目录
1、wait方法:作用是等待窗口处于某种状态
'''
参数:
wait_for:等待的状态(状态有以下几种)
---exists:表示该窗口是有效的句柄
---visible:表示该窗口未隐藏
---enabled:表示未禁用窗口
---ready:表示该窗口可见并启用
---active:表示该窗口处于活动状态
timeout:超时时间
retry_interval:重试时间间隔
'''
from pywinauto import application, findbestmatch, findwindows, keyboard, mouse, timings import os os.environ.update({"__COMPAT_LAYER": "RUnAsInvoker"}) app = application.Application(backend='uia').start('notepad.exe') win = app['无标题 - 记事本'] # file = win['应用程序'].child_window(title="文件(F)", control_type="MenuItem") # print(win.print_control_identifiers()) # 打印结构树,可以打印到文件中,见中文文档 win.wait(wait_for='visible',timeout=1,retry_interval=1)2、wait_not()方法:作用是等待窗口不处于某种状态,参数同wait()
win.wait_not(wait_for_not='visible', timeout=10, retry_interval=1)3、wait_cpu_usage_lower(),等待该进程的cup的使用率低于某个阀值。注意:此方法仅适用于整个应用程序进程,不适用于窗口/元素。
'''
参数:
---threshold:该进程cup占用率
---timeout :超时时间
---retry_interval:重试时间问隔
'''app.wait_cpu_usage_lower(threshold=0.01, timeout=3, usage_interval=1)4、wait_for_process_exit,等待进程退出,否则引出TimeoutError异常
wait_for_process_exit(self, timeout=None, retry_interval=None)
timings.wait_until() timings.wait_until_passes() ''' 参数:timeout超时时间 retry_interval 重试时间 func 执行的函数 value 比较的值 op 比较方式函数(默认为相等) args 给执行函数传位置参数 kwargs 给执行函数传关键字参数 '''通过在对象timings.Tfimings中设置全局静态变量(等待时间),它可以单独根据需要进行调整
全局计时变量值的设置方法
timings.Timings.defaults() # 将全局计时设置为默认值 timings.Timings.slow() # 将所有时间加倍(使代码执行速度降低两倍) timings.Timings.fast() # 将所有时间减少一倍(使代码执行速度增加到两倍)
- from pywinauto import application, findbestmatch, findwindows, keyboard, mouse, timings
- import os
-
- os.environ.update({"__COMPAT_LAYER": "RUnAsInvoker"})
- app = application.Application(backend='uia').start('notepad.exe')
- win = app['无标题 - 记事本']
-
- text = '''
- 红笺小字。说尽平生意。鸿雁在云鱼在水。惆怅此情难寄。
- 斜阳独倚西楼。遥山恰对帘钩。人面不知何处,绿波依旧东流。
- '''
- edit = win['Edit'].type_keys(text) # type_keys()输入文本内容
- # 常用按键,不加花括号时,默认为文本形式进行输入
- keyboard.send_keys('{VK_F5}') # F5,另一种写法keyboard.send_keys('{F5}')
- BACKSPACE {BACKSPACE}、{BS} 或 {BKSP}
- BREAK {BREAK}
- CAPS LOCK {CAPSLOCK}
- DEL 或 DELETE {DELETE} 或 {DEL}
- DOWN ARROW(下箭头) {DOWN}
- END {END}
- ENTER {ENTER} 或 ~
- ESC {ESC}
- HELP {HELP}
- HOME {HOME}
- INS 或 INSERT {INSERT} 或 {INS}
- LEFT ARROW(左箭头) {LEFT}
- NUM LOCK {NUMLOCK}
- PAGE DOWN {PGDN}
- PAGE UP {PGUP}
- PRINT SCREEN {PRTSC}(保留,以备将来使用)
- RIGHT ARROW(右箭头) {RIGHT}
- SCROLL LOCK {SCROLLLOCK}
- TAB {TAB}
- UP ARROW(上箭头) {UP}
- F1 {F1}
- F2 {F2}
- F3 {F3}
- F4 {F4}
- F5 {F5}
- F6 {F6}
- F7 {F7}
- F8 {F8}
- F9 {F9}
- F10 {F10}
- F11 {F11}
- F12 {F12}
- F13 {F13}
- F14 {F14}
- F15 {F15}
- F16 {F16}
- 数字盘加号 {ADD}
- 数字盘减号 {SUBTRACT}
- 数字盘乘号 {MULTIPLY}
- 数字盘除号 {DIVIDE}
win = app['无标题 - 记事本'] text = ''' 红笺小字。说尽平生意。鸿雁在云鱼在水。惆怅此情难寄。 斜阳独倚西楼。遥山恰对帘钩。人面不知何处,绿波依旧东流。 ''' edit = win['Edit'].type_keys(text) keyboard.send_keys('^a') keyboard.send_keys('^c') keyboard.send_keys('^v') keyboard.send_keys("{VK_RETURN}") keyboard.send_keys('^v')
'+': {VK_SHIFT}'^': {VK_CONTROL}'%': {VK_MENU}
参数:button指定左击还是右击,coords指定鼠标点击的位置(x,y)
单击
- from pywinauto import mouse
- mouse.click(button='left', coords=(100, 100)) # 左击,默认为左击,可以不写button参数
- mouse.click(button='right', coords=(100, 100)) # 右击
- mouse.right_click(coords=(100, 135)) # 右击
双击
mouse.double_click(button='left', coords=(100, 135))
按下和释放鼠标
- # 按下鼠标:press
- mouse.press(button='left', coords=(1000, 20)) # 将鼠标移动到(1000,20)处坐标处按下
- # 释放鼠标:repleace
- mouse.release(button='left', coords=(1500, 200)) # 将鼠标移动到(200,200)处释放
移动鼠标位置
mouse.move(coords=(800, 500))
鼠标中键单击
mouse.wheel_click(coords=(400, 400))
鼠标滚轮操作
wheel_dist指定鼠标滚轮滑动的次数,正数往上,负数往下
- for i in range(10):
- mouse.scroll(coords=(1200, 300), wheel_dist=-3)