测试对象:
from pywinauto.application import Application
# 启动Navicat
app = Application("uia").start(r"D:\Navicat for MySQL\navicat.exe")
# 选择窗口
dlg = app["Navicat for MySQL"]
# 选择菜单
menu = dlg["menu"]
# 选择菜单项:文件
file = menu.child_window(title="文件")
wrapper_object()
dlg.wrapper_object() # Dialog
menu.wrapper_object() # Menu
file.wrapper_object() # MenuItem
dir()
dir(dlg.wrapper_object())
.texts()
file.texts() # ['文件']
.children()
dlg.children()
menu.children()
file.children()
.class_name()
menu.class_name()
menu.get_properties()
{
'class_name': 'TActionMainMenuBar',
'friendly_class_name': 'Menu',
'texts': [''],
'control_id': 6555556,
'rectangle': <RECT L780, T151, R1980, B185>,
'is_visible': True,
'is_enabled': True,
'control_count': 6,
'is_keyboard_focusable': True,
'has_keyboard_focus': True,
'automation_id': '6555556'
}
pic = dlg.capture_as_image()
pic.save("dlg.png")
pic1 = menu.capture_as_image()
pic1.save("menu.png")
pic3 = file.capture_as_image()
pic3.save("file.png")
menu.items()
menu.item_by_index(1)
menu.item_by_path('文件->新建连接...')
file.items()
file.click_input()
需要先点击文件出现了「新建连接...」后再点击
file.click_input()
menu.item_by_path("文件->新建连接...").click_input()
# 等待窗口处于可见状态
new_dlg.wait(wait_for="ready",timeout=10,retry_interval=1)
print("等待通过,当前新建连接的窗口处于可见状态")
# 等待窗口不处于可见状态
new_dlg.wait_not(wait_for_not="ready",timeout=10,retry_interval=1)
print("等待通过,当前新建连接的窗口不处于可见状态")
wait_cpu_usage_lower
app.wait_cpu_usage_lower(threshold=20,timeout=5,usage_interval=1)
print("等待通过,当前该进程cup占用率低于%20")
wait_until方法:
from pywinauto.timings import wait_until,Timings
# 等待work返回的结果为5,继续往下执行
wait_until(10, 1, work, 15)
Timings.Defaults()
Timings.slow()
Timings.fast()