v1.50 •使用案例• API 参考•关于和制作人员•试用云• PyCon 视频• Telegram 聊天•中文• हिन्दी •西班牙语•法语• বাংলা • Русский •葡萄牙语•印尼语•德语•更多..
要安装 RPA(机器人流程自动化)的 Python 包 -
pip install rpa
要在 Jupyter 笔记本、Python 脚本或交互式 shell 中使用它 -
import rpa as r
有关操作系统和可选视觉自动化模式的注释 -
RPA for Python 简单而强大的 API 让机器人流程自动化变得有趣!您可以使用它快速自动处理网站、桌面应用程序或命令行上的重复性耗时任务。
为了表达我的谢意,任何报告的新错误都将获得您首选商家赠送的 200 美元礼品卡。任何接受的功能建议都将获赠价值 100 美元的礼品卡。
r . init ()
r . url ( 'https://duckduckgo.com' )
r . type ( '//*[@name="q"]' , 'decentralisation[enter]' )
r . wait () # ensure results are fully loaded
r . snap ( 'page' , 'results.png' )
r . close ()
r . init ( visual_automation = True )
r . dclick ( 'outlook_icon.png' )
r . click ( 'new_mail.png' )
...
r . type ( 'message_box.png' , 'Hi Gillian,[enter]This is ...' )
r . click ( 'send_button.png' )
r . close ()
r . init ( visual_automation = True , chrome_browser = False )
print ( r . read ( 'pdf_report_window.png' ))
print ( r . read ( 'image_preview.png' ))
r . hover ( 'anchor_element.png' )
print ( r . read ( r . mouse_x (), r . mouse_y (), r . mouse_x () + 400 , r . mouse_y () + 200 ))
r . close ()
r . init ( visual_automation = True , chrome_browser = False )
r . keyboard ( '[cmd][space]' )
r . keyboard ( 'safari[enter]' )
r . keyboard ( '[cmd]t' )
r . keyboard ( 'snatcher[enter]' )
r . wait ( 2.5 )
r . snap ( 'page.png' , 'results.png' )
r . close ()
r . init ( visual_automation = True )
r . type ( 600 , 300 , 'neo kobe city' )
r . click ( 900 , 300 )
r . snap ( 'page.png' , 'results.png' )
r . hover ( 'button_to_drag.png' )
r . mouse ( 'down' )
r . hover ( r . mouse_x () + 300 , r . mouse_y ())
r . mouse ( 'up' )
r . close ()
首先,在 Telegram 应用程序上查找 @rpapybot 以批准接收消息
r . telegram ( '1234567890' , 'ID can be string or number, r.init() is not required' )
r . telegram ( 1234567890 , 'Hello World. Olá Mundo. नमस्ते दुनिया. 안녕하세요 세계. 世界,你好。' )
r . telegram ( 1234567890 , 'Use backslash n for new line n This is line 2 of the message' )
在 PrivateBin 上安全共享最多 100 MB 的文件,该文件将在 1 周后自毁
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
注释•元素标识符•核心功能•基本功能•专业功能•辅助功能
请参阅示例 Python 脚本、RPA 挑战解决方案和 RedMart 杂货示例。要发送 Telegram 应用程序通知,只需查找 @rpapybot 以允许接收消息。要以隐形方式自动化 Chrome 浏览器,请使用无头模式。要比正常人类速度快 10 倍,请使用 Turbo 模式(请阅读注意事项!)。某些验证码可以使用 2Captcha、Capsolver 等服务或直接通过复制用户操作来解决。
在专用 PrivateBin 服务器上使用内置临时在线存储安全地共享最大 100 MB 的文件。您甚至可以使用此 Colab 笔记本在手机浏览器上运行 RPA(例如,使用最多 5 个 Colab 会话进行数据抓取)。根据设计,该软件包具有企业安全性,您可以在没有互联网的情况下安装、更新和使用它。
通过设置 error(True) 来引发 Python 错误异常,并使用 try- except 进行管理,完全控制错误处理。要对 Web 浏览器文件下载位置进行细粒度控制,请使用 download_location()。要覆盖默认文件夹位置来安装和调用 TagUI(针对 rpa 包优化的分叉版本),请使用 tagui_location()。
如果您使用非英语操作系统并收到“无效的连续字节”错误,您可以设置代码页以支持 UTF-8 或将 Python 脚本的编码更改为您的操作系统编码。中文请参见此示例。使用 focus() 使 Windows/Mac 应用程序窗口处于焦点(请参阅此处了解 pywin32 替代方案)。
一些用户可能会发现使用人工智能和机器学习(特别是LLM大型语言模型)来帮助生成模板脚本很有趣或有用,然后他们进行相应的微调。请参阅此问题,了解我向 Anthropic 的 Claude 3.5 Sonnet 提出的一些问题及其答复。
元素标识符有助于准确地告诉 RPA for Python 您想要与用户界面上的哪个元素进行交互。例如, //*[@id='email'] 是指向具有 id 属性“email”的网页元素的 XPath。
对于 Web 自动化,Web 元素标识符可以是 XPath 选择器、CSS 选择器或以下属性 - id、name、class、title、aria-label、text()、href(按优先级降序排列)。建议手动编写 XPath 或简单地使用属性。超时前自动等待元素出现,返回找不到元素的错误。要更改 10 秒的默认超时,请使用 timeout()。 PS - 如果您使用 Chrome 扩展来读取 XPath,请使用 SelectorsHub。
?元素标识符还可以是表示 UI 元素的 .png 或 .bmp 图像快照(可以位于桌面应用程序、终端窗口或 Web 浏览器上)。如果指定的图像文件不存在,OCR 将用于在屏幕上搜索该文本以作用于包含该文本的 UI 元素,例如 r.click('Submit Form.png')。 .png 图像支持透明度(0% 不透明度)。也可以使用屏幕上元素的 x、y 坐标。有关视觉自动化 2 台显示器和 macOS Retina 显示问题的说明。
?另一个图像标识符示例是窗口(PDF 查看器、MS Word、文本框等)的 png 图像,其中图像的中心内容设置为透明。这允许使用 read() 和 snap() 执行 OCR 并保存具有不同内容的应用程序窗口、容器、框架、文本框的快照。请参阅此 PDF 框架的图像示例,其中内容已被删除以保持透明。对于 read() 和 snap(),x1、y1、x2、y2 坐标对可用于定义屏幕上的感兴趣区域以执行 OCR 或捕获快照。
功能 | 参数 | 目的 |
---|---|---|
init() | visual_automation=False , chrome_browser=True | 启动 TagUI,首次运行时自动设置 |
close() | 关闭 TagUI、Chrome 浏览器、SikuliX | |
pack() | 用于在没有互联网的情况下部署包 | |
update() | 用于在没有互联网的情况下更新软件包 | |
error() | 是True False | 设置为 True 以引发错误异常 |
debug() | True 或False 或text_to_log | 打印调试信息并将其记录到 rpa_python.log |
默认情况下,Python 的 RPA 以正常人类速度运行,要运行速度提高 10 倍,请使用 init(turbo_mode = True)
功能 | 参数 | 目的 |
---|---|---|
url() | webpage_url (无参数返回当前 URL) | 转到网址 |
click() | element_identifier (或使用视觉自动化的 x、y) | 左键单击元素 |
rclick() | element_identifier (或使用视觉自动化的 x、y) | 右键单击元素 |
dclick() | element_identifier (或使用视觉自动化的 x、y) | 双击元素 |
hover() | element_identifier (或使用视觉自动化的 x、y) | 将鼠标移至元素 |
type() | element_identifier (或 x、y)、 text ( '[enter]' / '[clear]' ) | 在元素处输入文本 |
select() | element_identifier (或x,y), value or text (或x,y) | 选择下拉选项 |
read() | element_identifier ( 'page' 是网页)(或x1,y1,x2,y2) | 返回元素文本 |
snap() | element_identifier ( 'page' 是网页), filename_to_save | 将屏幕截图保存到文件 |
load() | filename_to_load | 返回文件内容 |
dump() | text_to_dump 、 filename_to_save | 将文本保存到文件 |
write() | text_to_write , filename_to_save | 将文本附加到文件 |
ask() | text_to_prompt | 询问并返回用户输入 |
要等待元素出现直到 timeout() 值,请使用hover()。拖放,这样做
功能 | 参数 | 目的 |
---|---|---|
telegram() | telegram_id , text_to_send (首先查找@rpapybot) | 发送电报消息 |
keyboard() | keys_and_modifiers (使用视觉自动化) | 将击键发送到屏幕 |
mouse() | 'down' 或'up' (使用视觉自动化) | 将鼠标事件发送到屏幕 |
focus() | app_to_focus (应用程序的全名) | 使应用成为焦点 |
wait() | delay_in_seconds (默认 5 秒) | 明确等待一段时间 |
table() | table number 或XPath , filename_to_save | 将网页表保存到 CSV |
bin() | file_to_bin , password (可选但推荐) | 安全的临时存储 |
upload() | element_identifier (CSS)、 filename_to_upload | 将文件上传到网页元素 |
download() | download_url , filename_to_save (可选) | 从 URL 下载到文件 |
unzip() | file_to_unzip , unzip_location (可选) | 将zip文件解压到指定位置 |
frame() | main_frame id or name , sub_frame (可选) | 设置网页框架,frame()重置 |
popup() | string_in_url (没有参数可以重置到主页,在用于控制另一个浏览器选项卡时尤其重要) | 将上下文设置为 Web 弹出选项卡 |
run() | command_to_run (在命令之间使用 ; ) | 运行操作系统命令并返回输出 |
dom() | statement_to_run (在浏览器中运行的JS代码) | 在 DOM 中运行代码并返回输出 |
vision() | command_to_run (SikuliX 的 Python 代码) | 运行自定义 SikuliX 命令 |
timeout() | timeout_in_seconds (空白返回当前超时) | 更改等待超时(默认 10 秒) |
Keyboard() 修饰符和特殊键 -
[shift] [ctrl] [alt] [win] [cmd] [clear] [space] [enter] [backspace] [tab] [esc] [up] [down] [left] [right] [pageup] [pagedown] ] [删除] [主页] [结束] [插入] [f1] .. [f15] [打印屏幕] [滚动锁定] [暂停] [大写锁定] [数字锁定]
功能 | 参数 | 目的 |
---|---|---|
exist() | element_identifier | 如果元素在超时之前显示,则为 True 或 False |
present() | element_identifier | 如果元素现在存在则返回 True 或 False |
count() | element_identifier | 以整数形式返回 Web 元素的数量 |
clipboard() | text_to_put 或无参数 | 输入文本或将剪贴板文本作为字符串返回 |
get_text() | source_text , left , right , count=1 | 返回左右标记之间的文本 |
del_chars() | source_text 、 characters | 删除给定字符后返回文本 |
mouse_xy() | 以字符串形式返回鼠标的“(x,y)”坐标 | |
mouse_x() | 以整数形式返回鼠标的 x 坐标 | |
mouse_y() | 以整数形式返回鼠标的 y 坐标 | |
title() | 以字符串形式返回当前网页的页面标题 | |
text() | 以字符串形式返回当前网页的文本内容 | |
timer() | 以浮点形式返回调用之间经过的时间(以秒为单位) |
要快速输入大量文本,请使用clipboard()和keyboard()来粘贴而不是type()
TagUI 是领先的开源 RPA 软件 ?拥有数以万计的用户。它是在 2016-2017 年创建的,当时我作为测试自动化工程师离开星展银行,前往东欧休假一年。它的大部分代码库是在塞尔维亚诺维萨德编写的。 2018年,我加入AI Singapore继续开发TagUI。
2019 年的几个月里,我全职承担了爸爸的角色,照顾我刚出生的女婴和妻子??。在做保姆的间隙,我利用自己的时间创建了这个基于 TagUI 的 Python 包。我希望pip install rpa
能让各行各业的 Python 用户生活得更轻松。
我一直在用我的个人时间维护这个包(以及针对它优化的 TagUI 的分叉版本)。但现在,Marcelo Cecin、Luis Alejandro、Jozsef Fulop、Tolani Jaiye-Tikolo、Shyan Chua、Laurence Liew、Bala Ranganathan 和我自己是维护这个包的新团队。我们很高兴有成千上万的人使用它?
有关技术信息,请参阅下面其直观的架构以及此单文件包中的大量注释。
我想对下面这些出色的开源贡献者表示感谢和感谢❤️
RPA for Python 是在 Apache 2.0 许可下发布的开源软件
Mindly
除了令人惊叹的 OpenRPA 软件和我亲自开发的开源 RPA 工具之外,我很少推荐产品。我想推荐可在手机和 macOS 上使用的 Mindly 思维导图应用程序。
思维导图是一种存储、组织和检索信息的直观方式,因为它模仿了思维的工作方式——不同概念和记忆之间的关系。非常适合在旅途中高效利用空闲时间。
下图是一个关于咖啡好处的 Mindly 示例。我个人用它来规划我未来 13 年的生活,思考如何成为一个更好的丈夫,保留传统英国食品清单,存储超市会员条形码,以及在旅途中做笔记。甚至还有一个思维导图供我 3 岁的女儿玩,她只是喜欢将节点拖入垃圾箱。所以我创建了一个虚拟思维导图以供她销毁。
最重要的是,免费版本应该可以满足大多数用户的需求。我没有超过每个思维导图 100 个节点的免费限制,但我在使用它后很早就购买了它,以支持该应用程序背后的团队的工作。
PS - 我不认识 Mindly 的团队,只是在这里推荐该应用程序,因为它很棒