论:上传文件指令支持win端吗?下面分享一个桌面软件的上传文件指令
评论
收藏

论:上传文件指令支持win端吗?下面分享一个桌面软件的上传文件指令

经验分享
Code拾光者(小新)
2025-07-07 22:09·浏览量:1544
Code拾光者(小新)
影刀专家
影刀认证工程师
发布于 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

收藏10
全部评论1
最新
发布评论
评论