如何使用pywinauto获取DataItem控件内的Jurat文本?
解决pywinauto提取DataItem控件内部文本的问题
问题分析
你定位到的DataItem属于复合控件,.text()方法仅返回它的顶层标题Title Row 1,而你需要的Jurat文本大概率嵌套在该控件的子元素中。
解决方案
1. 遍历子控件查找目标文本
先尝试遍历该DataItem的所有子控件,检查是否存在包含Jurat的元素:
# 先定位到你的DataItem控件 data_item = app.window(...).child_window(title="Title Row 1", control_type="DataItem") # 遍历所有子控件(包括深层嵌套) for child in data_item.descendants(): # 打印控件类型和文本,定位目标控件 print(f"控件类型: {child.control_type()}, 文本: {child.text()}")
找到对应子控件后,直接调用它的.text()方法即可提取Jurat。
2. 查看控件的隐藏属性
如果子控件没有直接暴露文本,可打印该DataItem的所有属性,确认目标文本是否存储在某个属性中:
props = data_item.get_properties() # 遍历所有属性键值对 for key, value in props.items(): print(f"{key}: {value}")
部分控件会把文本存放在automation_id、help_text或自定义属性里。
3. OCR识别控件区域文本
如果以上方法都无效,说明控件未对外暴露文本属性,只能通过截图识别:
from PIL import Image import pytesseract # 获取控件的坐标区域 control_rect = data_item.rectangle() # 截取控件区域的截图 screenshot = data_item.capture_as_image() # 用OCR识别文本 extracted_text = pytesseract.image_to_string(screenshot) # 提取目标文本 if "Jurat" in extracted_text: print("提取到目标文本:", "Jurat")
注意:使用OCR前需安装pytesseract和Tesseract OCR引擎,且要保证控件区域清晰无遮挡。
内容的提问来源于stack exchange,提问作者Brandon Steele
相关产品推荐
相关产品推荐

