Skip to content

youyouzh/urpa

Repository files navigation

urpa

背景

想开发一个自己的RPA系统,方便基于Python编写流程脚本。

现阶段主要基于Windows系统的UI自动化进行人机交互,使用UI自动化进行UI元素交互。

后期可能使用AI来实现UI元素自动切割,以解决部分应用无法使用uiautomation的问题,以及提高通用性。

规划

概述

一个RPA系统主要包括在各个机器上运行的代理端worker,以及控制端control。

control负责管理worker的注册,流程脚本的上传分发和运行,worker负责运行实际的流程脚本。

control

control支持高可用,多节点,使用python flask实现,并使用redis实现多节点切换等。使用心跳或者长连接来和worker进行通信。

功能列表:

  • worker机器人管理,机器人活跃状态监测,运行性能监测等
  • 流程管理,用于编辑和存储具体的各种流程
  • 任务管理,流程组装和运行,运行时刻表
  • 用户权限管理
  • 系统管理
  • 检查活动机器列表,流程调度,轮询当前时刻是否有任务调度,发送任务到worker
  • 接受api接口,将任务发送到worker

支持统一配置通知中心,统一配置各台机器的任务。

worker

作为服务注册等,常驻运行,自动启动,运行control分发的python任务,屏幕不锁屏。

  • 截屏,截取元素
  • 日志记录
  • 不锁定,自动解锁
  • 保存运行截图或者视频
  • 实时传输视频帧
  • 注册为Windows服务,开机自启动

通用封装

为了方便的进行流程脚本开发,提供一些容易使用的ui自动化工具和函数,比如:

  • 打开应用,切换窗口
  • 查找定位元素,输入内容
  • 查找文件下载文件
  • 浏览器交互,元素定位等
  • 验证码识别服务(滑动验证码)

模块封装

窗口

  • 获取所有应用窗口
  • 切换到某个应用程序的窗口
  • 检查某个应用程序的窗口是否激活或者是否打开
  • 获取活动窗口
  • 设置窗口活动,设置窗口top-level
  • 根据程序路径打开/关闭应用程序
  • 窗口最大化或者最下化
  • 窗口大小,屏幕分辨率大小

浏览器

  • 打开浏览器,或者检查浏览器是否存在
  • 浏览器输入网址进入到某个网页
  • 浏览器元素查找

元素操作

ui自动化的元素操作

  • 控件
    • 激活
    • 选中
    • 获取文本
    • 设置焦点
    • 获取属性
    • 获取位置
    • 截取屏幕载图
  • 交互
    • 查找元素后交互
    • 鼠标左键,右键,滚轮(光标位置)
    • 指针移动,光标位置
    • 键盘输入
  • 事件
    • 等待元素出现时
    • 等待元素消失时
  • 查找元素
    • 是否存在元素
    • 查找元素
      • 查找超时时间
      • 查找不到抛出是否抛出异常
    • 查找子元素
    • 查找父元素
    • 查找兄弟元素

系统

  • 剪贴板读写,文件,文本,图像
  • 文件对话框操作
  • 应用程序打开关闭,进程启动获取终止
  • 文件操作:创建/移动文件夹,创建/写入/读取/移动/删除文件
  • 环境:获取环境变量,系统变量

可能的任务场景

  • 基于UI自动化微信消息抓取和发送
  • 企业微信发送和消息爬取
  • QQ消息发送和消息爬取
  • 一些应用交互封装:IMS客户端交互
  • 浏览器访问,登录,点击操作,上传或者下载文件

Releases

No releases published

Packages

No packages published