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

如何使用pywinauto检测应用程序/窗口中是否存在指定文本?

使用pywinauto检测窗口中的指定文本

根据你提供的控件树信息,目标文本位于一个List控件(UIA后端下类型为"List",对应Win32的ListBox)中,以下是可行的解决方案:

1. 精确定位目标List控件

从控件树可以看到,该List控件有唯一的auto_id="listBoxMessages",用这个属性定位比动态变化的标题更可靠:

# 从SZRCPane10下定位List控件
list_messages = dialog["SZRCPane10"].child_window(auto_id="listBoxMessages", control_type="List")

2. 检测指定文本的两种方法

方法一:遍历所有列表项文本

获取所有项的文本后,检查是否包含目标内容:

target_text = "The Configuration Backend has just established connection to MPData"

# 获取所有列表项的文本
all_item_texts = [item.text() for item in list_messages.items()]

# 检查目标文本是否存在
if any(target_text in text for text in all_item_texts):
    print("目标文本存在")
else:
    print("目标文本不存在")

方法二:直接匹配控件标题(更高效)

利用pywinauto的lambda标题匹配,直接查找包含目标文本的列表项,还可以设置等待超时:

target_text = "The Configuration Backend has just established connection to MPData"

try:
    # 等待包含目标文本的列表项出现(超时10秒)
    list_messages.child_window(
        title=lambda x: target_text in x,
        control_type="ListItem"
    ).wait("exists", timeout=10)
    print("目标文本存在")
except Exception:
    print("目标文本不存在")

为什么之前的尝试失败?

你之前用x["ListBox"]定位控件时,UIA后端下该控件的control_type是"List"而非"ListBox",且控件标题是动态变化的日志内容,导致定位失败,后续调用item_texts()等方法自然无法获取有效内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:13:22