在写脚本的过程中发现有些联想下拉框,使用print_control_identifiers()方法打印后并没有打印出来, 使用Inspect查看,发现该下拉框并不在我们测试的app下,而在桌面窗格下:
这种控件我们可以使用pywinauto的Desktop类来获取:
from pywinauto import Desktop
top_windows = Desktop(backend="uia")
# 获取到联想框所在窗口
drop_win = top_windows.window(auto_id='DropDownForm')
# 再获取该窗口下的元素
dept_table = drop_win.child_window(title="DataGridView",control_type="Table")
另外,我们也可以使用windows()方法获取所有桌面窗口
from pywinauto import Desktop
# 获取桌面所有窗口
windows = Desktop(backend="uia").windows()
# 遍历所有窗口并打印窗口title
for win in windows:
print(win.window_text())
关于Desktop类:
在Pywinauto中,Desktop用于表示整个Windows桌面。它提供了一些方法和属性,用于访问和操作桌面上的应用程序和窗口。Desktop的作用范围可以跨进程。主要用于一个程序可以包含多个实例(进程)的程序。