能否通过Python脚本触发UiPath流程?求实现方法
用Python触发UiPath流程并实现每日自动执行
完全可以通过Python脚本触发UiPath流程,下面提供两种可靠的实现方案,以及定时触发的配置方法:
方案一:调用UiPath命令行工具(UiRobot.exe)
这是最直接的方式,适用于所有UiPath Studio版本。
步骤1:确认UiRobot.exe路径
UiRobot.exe通常安装在以下路径(根据你的安装位置调整):
C:\Program Files (x86)\UiPath\Studio\UiRobot.exe
步骤2:编写Python调用脚本
使用subprocess模块执行命令行指令来启动流程:
import subprocess def run_uipath_workflow(): # 替换为你的UiRobot.exe路径和流程文件路径 uipath_robot_path = r"C:\Program Files (x86)\UiPath\Studio\UiRobot.exe" workflow_path = r"C:\Workflows\YourDataDownloadWorkflow.xaml" # 构建执行命令 cmd = [uipath_robot_path, "execute", "--file", workflow_path] try: # 执行流程,捕获输出 result = subprocess.run(cmd, check=True, capture_output=True, text=True) print(f"流程执行成功:{result.stdout}") except subprocess.CalledProcessError as e: print(f"流程执行失败:{e.stderr}") # 测试运行 run_uipath_workflow()
如果你的流程是发布到本地UiRobot库的,可以用流程名称代替文件路径:
cmd = [uipath_robot_path, "execute", "--process", "YourWorkflowName"]
步骤3:配置每日自动触发
有两种方式实现定时:
方法A:用Python的schedule库
安装schedule库:pip install schedule,然后编写定时脚本:import schedule import time import subprocess def run_uipath_workflow(): uipath_robot_path = r"C:\Program Files (x86)\UiPath\Studio\UiRobot.exe" workflow_path = r"C:\Workflows\YourDataDownloadWorkflow.xaml" cmd = [uipath_robot_path, "execute", "--file", workflow_path] try: subprocess.run(cmd, check=True) print("流程已完成执行") except subprocess.CalledProcessError as e: print(f"执行出错:{e}") # 设置每日8点执行 schedule.every().day.at("08:00").do(run_uipath_workflow) # 保持脚本运行 while True: schedule.run_pending() time.sleep(60)注意:需要保持这个Python脚本后台运行,否则定时会失效。
方法B:用系统任务计划(推荐)
这种方式更稳定,无需脚本一直运行:- 打开Windows任务计划程序,创建新任务
- 触发器设置为「每日」,指定执行时间
- 操作选择「启动程序」,程序/脚本选你的Python.exe路径,添加参数为你的脚本文件路径(比如
C:\Scripts\run_uipath.py) - 勾选「不管用户是否登录都要运行」,并设置执行用户的密码,确保流程能正常访问桌面
方案二:调用UiPath本地REST API
适用于UiPath Studio 2020.10及以上版本,UiRobot默认开启本地API(端口2222)。
步骤1:确认UiRobot服务运行
打开任务管理器,确认UiRobot.exe进程处于运行状态,若未运行,可从开始菜单启动UiRobot。
步骤2:编写Python API调用脚本
使用requests模块调用API:
import requests def get_workflow_id(workflow_name): # 获取本地所有流程列表 response = requests.get("http://localhost:2222/processes") if response.status_code == 200: processes = response.json() # 根据流程名称查找ID for p in processes: if p["Name"] == workflow_name: return p["Id"] print("未找到指定流程") return None def start_workflow(workflow_id): # 启动流程的请求体 payload = { "startInfo": { "ProcessId": workflow_id, "JobPriority": "Normal" } } response = requests.post("http://localhost:2222/jobs/start", json=payload) if response.status_code == 201: print("流程已成功启动") else: print(f"启动失败:{response.text}") # 替换为你的流程名称 target_workflow = "YourDataDownloadWorkflow" workflow_id = get_workflow_id(target_workflow) if workflow_id: start_workflow(workflow_id)
步骤3:配置定时触发
同样可以用schedule库或系统任务计划来定时执行这个API脚本,方法同方案一。
注意事项
- 若流程需要桌面交互(比如登录窗口),确保执行脚本的用户有桌面访问权限,Windows任务计划中需勾选「不存储密码」以外的选项,并指定有权限的用户。
- 命令行工具支持传递参数给流程,使用
--arguments选项,比如--arguments '{"Username":"admin","Password":"123"}'。 - 若遇到权限问题,尝试以管理员身份运行Python脚本或任务计划。
内容的提问来源于stack exchange,提问作者Surya Teja Sankuri
相关产品推荐
相关产品推荐

