如何使用pywinauto在资源管理器及程序保存对话框中切换目录?
使用pywinauto操作第三方触发的“另存为”对话框:切换目录与控件定位
一、通过输入路径切换目录的实现方法
Windows标准“另存为”对话框支持直接输入路径跳转,用pywinauto实现的核心步骤如下:
定位对话框窗口
必须使用UIA后端(Win32后端无法完整识别对话框控件)定位目标窗口,示例代码:from pywinauto import Desktop # 标题根据实际场景调整,比如Word的另存为标题可能是"另存为"或包含文件名 save_dialog = Desktop(backend="uia").window(title="另存为")定位路径输入控件
对话框中可直接输入路径的控件,常见定位方式有两种:- 通过固定控件ID定位(Windows标准对话框的路径输入框ID为
1148):path_input = save_dialog.Edit.control_id(1148) - 通过控件类型定位(如果ID不生效):
path_input = save_dialog.child_window(control_type="Edit", found_index=0)
- 通过固定控件ID定位(Windows标准对话框的路径输入框ID为
输入路径并确认
输入目标路径后按回车,即可切换到指定目录:path_input.set_text("D:\\目标文件夹\\子目录") path_input.type_keys("{ENTER}")
二、解决print_control_identifiers()找不到控件的问题
默认情况下pywinauto使用Win32后端,无法识别“另存为”对话框中的UIA控件。解决方法:
- 切换到UIA后端后再打印控件树:
此时就能看到路径输入框的完整信息,它的核心标识:save_dialog = Desktop(backend="uia").window(title="另存为") save_dialog.print_control_identifiers()- 控件类型:
Edit - 自动化ID:
1148(标准对话框通用) - 标题会显示当前路径
- 控件类型:
内容的提问来源于stack exchange,提问作者merfy
相关产品推荐
相关产品推荐

