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 的團隊,只是在這裡推薦該應用程序,因為它很棒