You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pywinauto无法点击右键子菜单:点击「发送到」后无法定位BTDecoder

解决Pywinauto无法点击「发送到」子菜单中BTDecoder的问题

我来帮你搞定这个Pywinauto的菜单点击问题!你遇到的MatchError本质是因为点击「发送到」后弹出的子菜单,并不属于原来右键主菜单的子控件,而是一个独立的桌面菜单窗口,所以用app.ContextMenu.child_window会找不到目标项。下面给你几个可行的解决方案:

方案一:用menu_select直接触发菜单路径(最推荐)

Pywinauto提供了menu_select方法,可以直接通过菜单层级路径来选择,不需要手动分步点击,能自动处理菜单的弹出和层级关系,稳定性更高。修改后的代码如下:

from pywinauto import Application

app = Application(backend="uia").connect(path="explorer.exe", title="FW")
# 定位目标文件
common_files = app.FW.ItemsView.get_item('WRT_FW_6_3_2019_10_37_56_multi_core_000001.etl')
common_files.set_focus()

# 右键点击文件,然后直接通过路径选择菜单项
common_files.right_click_input()
app.ContextMenu.menu_select("Send to->BTDecoder")

如果运行时提示找不到路径,你可以先打印右键菜单的所有控件标识符,确认「Send to」和「BTDecoder」的准确文本:

common_files.right_click_input()
app.ContextMenu.print_control_identifiers()

根据输出的文本调整menu_select里的路径即可。

方案二:手动定位「发送到」子菜单窗口

如果方案一不适用,你可以手动定位「发送到」弹出的子菜单窗口(它属于Desktop层级,而非原右键菜单)。代码如下:

from pywinauto import Application, Desktop

app = Application(backend="uia").connect(path="explorer.exe", title="FW")
common_files = app.FW.ItemsView.get_item('WRT_FW_6_3_2019_10_37_56_multi_core_000001.etl')
common_files.set_focus().click_input(button='left')
common_files.click_input(button='right')

# 等待右键主菜单出现并点击「Send to」
app.ContextMenu.wait('visible', timeout=10)
send_to_menu = app.ContextMenu.child_window(title="Send to", control_type="Menu")
send_to_menu.click_input()

# 定位「发送到」的子菜单(属于Desktop窗口)
desktop = Desktop(backend="uia")
send_to_submenu = desktop.window(title="Send to", control_type="Menu")
send_to_submenu.wait('visible', timeout=10)

# 点击BTDecoder(如果auto_id无效,就只用title和control_type)
send_to_submenu.child_window(title="BTDecoder", control_type="MenuItem").click_input()

为什么原来的代码会报错?

你之前的代码里,点击「Send to」后仍然尝试从app.ContextMenu里找子项,但实际上「发送到」的子菜单是一个独立的窗口,挂载在Desktop下,而非原右键菜单的子控件,所以自然找不到「BTDecoder」。

内容的提问来源于stack exchange,提问作者Ashwini Rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:10:52