You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python中调用CMD执行指定UiPath RPA机器人脚本?

在Python中调用CMD执行UiPath机器人并后续执行API任务

我经常在Python API项目里集成UiPath机器人,正好可以给你一套实用的实现方案,确保机器人跑完之后再执行后续的API数据获取任务。

核心实现思路

我们用Python标准库的subprocess模块来调用外部命令,它能帮我们阻塞等待机器人执行完成,完美契合你“先跑RPA,再做API任务”的需求。

代码示例

import subprocess
import requests  # 假设你用requests做API数据获取

def run_uipath_robot():
    # 定义UiRobot路径和流程文件路径,用原始字符串避免转义问题
    uirobot_path = r"C:\Users\AppData\Local\UiPath\app-19.7.0\UiRobot.exe"
    xaml_file_path = r"C:\Users\Documents\UiPath\ThirdProcess\Main.xaml"
    
    # 把命令拆分成列表(推荐这种方式,避免shell注入风险)
    command = [uirobot_path, "/file", xaml_file_path]
    
    try:
        # 执行命令并等待完成,check=True会在命令执行失败时抛出异常
        result = subprocess.run(
            command,
            check=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True
        )
        print("UiPath机器人执行成功,输出:")
        print(result.stdout)
        return True
    except subprocess.CalledProcessError as e:
        print(f"UiPath机器人执行失败,错误信息:{e.stderr}")
        return False

# 主流程:先跑机器人,成功后执行API任务
if __name__ == "__main__":
    if run_uipath_robot():
        print("开始执行API数据获取任务...")
        # 这里替换成你的API逻辑
        api_response = requests.get("https://your-api-endpoint.com/data")
        if api_response.status_code == 200:
            data = api_response.json()
            print(f"成功获取API数据:{data}")
        else:
            print(f"API请求失败,状态码:{api_response.status_code}")
    else:
        print("机器人执行失败,终止后续API任务")

关键细节说明

  • 路径处理:用原始字符串r""包裹路径,避免Python把反斜杠当成转义字符导致路径错误。
  • 阻塞执行subprocess.run()默认会等待外部命令执行完成再继续往下走,正好保证机器人跑完才开始API任务。
  • 错误捕获:添加check=True和异常捕获,能及时发现机器人执行失败的情况,避免无效的API调用。
  • 输出捕获:通过stdoutstderr参数可以捕获机器人的执行日志,方便调试和排查问题。

额外注意事项

  • 确保你的Python进程有足够权限访问UiRobot.exe和XAML文件路径。
  • 如果你的UiPath版本更新了,记得同步修改uirobot_path里的版本号(比如app-19.7.0)。
  • 如果需要后台执行机器人不阻塞(不过你这里不需要),可以用subprocess.Popen(),但你当前场景用run()更合适。

内容的提问来源于stack exchange,提问作者shubham jain

火山引擎 最新活动