我想将鼠标悬停在第三方图标上(例如任务栏系统托盘中的“CCleaner”)并获取变量中的工具提示文本。在pywinauto中,pywinauto.controls.GetTip(tooltip_index)、pywinauto.controls.GetTipText(tooltip_index)和pywinauto.GetToolTipsControl()方法用于获取工具提示信息。但是我的代码中出现了错误。 不确定如何获取 tooptip_index。一段代码如下:
import pywinauto
from pywinauto import Application, taskbar
def click_tray_icon():
app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
sys_tray.child_window(title="People").click_input(button='left', double=True)
s = pywinauto.controls.common_controls.ToolTipsWrapper(sys_tray).texts()
print(s)
pywinauto.mouse.move(coords=(1729, 1063))
pywinauto.controls.GetTip(1)
pywinauto.controls.GetTipText(1)
AttributeError: module 'pywinauto.controls' has no attribute 'GetTip'
嗯,我有机会制作一个示例脚本。但它应该可以在当前的 master 分支上运行(0.6.6 尚未发布)。所以你必须这样安装 pywinauto:
pip uninstall pywinauto
pip install https://github.com/pywinauto/pywinauto/archive/master.zip
代码包含所有中间打印,以显示我是如何编写它的。接下来的每个步骤都包含从之前的
child_window
输出中复制粘贴的 dump_tree
规范。我刚刚删除了不必要的 auto_id="1504"
过滤器,因为我不确定这些值在所有 Windows 版本上都相同。
from __future__ import print_function
from pywinauto import Desktop
d = Desktop(backend='uia')
# print top level windows
# NOTE: method .windows() is not yet available for Desktop in pywinauto==0.6.5
for w in d.windows():
print(w)
# print Taskbar subtree
d.Taskbar.dump_tree()
main_tray_toolbar = d.Taskbar.child_window(title="User Promoted Notification Area", control_type="ToolBar")
# print titles of main tray area
for text in main_tray_toolbar.texts():
print(text)
notification_area_expand = d.Taskbar.child_window(title="Notification Chevron", control_type="Button")
notification_area_expand.invoke()
notification_area = d.window(title="Notification Overflow", control_type="Pane")
# print expanded area subtree
notification_area.dump_tree()
# print hidden icon texts
hidden_toolbar = notification_area.child_window(title="Overflow Notification Area", control_type="ToolBar")
for text in hidden_toolbar.texts():
print(text)
pywinauto.controls.uia_controls.ToolbarWrapper 元数据指出,
“请注意,工具提示控件是顶部窗口的子项 而不是工具栏的。”
这正是我所做的,只需 app.top_window(),您就会收到工具提示:D