

发布于 2025-04-23 00:03更新于 2025-07-07 22:091544浏览整体流程在下方
测试效果:

支持变量输入、文件路径、文件列表输入~
编码部分:
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import pywinauto
from pywinauto.keyboard import send_keys
import pyperclip
import time
from pywinauto.timings import TimeoutError
def main(dir_path, file_names, wait1, wait2):
"""
自动化文件选择对话框操作
参数:
dir_path: 要选择的目录路径
file_names: 要选择的文件名
wait1: 等待文件对话框出现的超时时间(秒)
wait2: 等待文件夹加载的超时时间(秒)
"""
try:
app = pywinauto.Desktop()
# 1. 等待文件对话框出现
start_time = time.time()
dlg = None
while time.time() - start_time < wait1:
try:
dlg = app["打开"]
break
except Exception:
time.sleep(0.5)
continue
if dlg is None:
raise TimeoutError(f"文件对话框未在{wait1}秒内出现")
# 2. 使用剪贴板方式输入路径
try:
dlg["Toolbar3"].click()
pyperclip.copy(dir_path) # 复制路径到剪贴板
time.sleep(0.2) # 等待剪贴板操作完成
send_keys("^a") # Ctrl+A 全选现有内容
send_keys("^v") # Ctrl+V 粘贴
send_keys("{VK_RETURN}") # 回车
except Exception as e:
raise Exception(f"路径输入失败: {str(e)}")
# 清空剪贴板
pyperclip.copy("")
# 3. 等待文件夹加载
time.sleep(wait2)
# 4. 使用剪贴板方式输入文件名
try:
pyperclip.copy(file_names) # 复制文件名到剪贴板
time.sleep(0.2) # 等待剪贴板操作完成
dlg["文件名(&N):Edit"].type_keys("^a") # Ctrl+A 全选
dlg["文件名(&N):Edit"].type_keys("^v") # Ctrl+V 粘贴
except Exception as e:
raise Exception(f"文件名输入失败: {str(e)}")
# 5. 点击打开按钮
try:
dlg["打开(&O)"].click()
except Exception as e:
raise Exception(f"点击打开按钮失败: {str(e)}")
# 清空剪贴板
pyperclip.copy("")
return True
except Exception as e:
print(f"操作失败: {str(e)}")
# 确保无论如何都清空剪贴板
pyperclip.copy("")
return False主流程部分:
不懂的可以直接联系我微信:Code_SGZ

