v1.50 • กรณีการใช้งาน • การอ้างอิง API • เกี่ยวกับและเครดิต • ลองบนคลาวด์ • วิดีโอ PyCon • โทรเลขแชท •中文• हिन्दी • Español • Français • عربى • বংলা • Русский • Português • Bahasa • Deutsch • เพิ่มเติม..
ในการติดตั้งแพ็คเกจ Python นี้สำหรับ RPA (กระบวนการอัตโนมัติของหุ่นยนต์) -
pip install rpa
หากต้องการใช้ในสมุดบันทึก Jupyter สคริปต์ Python หรือเชลล์แบบโต้ตอบ -
import rpa as r
หมายเหตุเกี่ยวกับระบบปฏิบัติการและโหมดเสริมภาพอัตโนมัติ -
API ที่เรียบง่ายและทรงพลังของ RPA สำหรับ Python ทำให้กระบวนการอัตโนมัติของหุ่นยนต์เป็นเรื่องสนุก! คุณสามารถใช้มันเพื่อกำจัดงานที่ต้องใช้เวลานานซ้ำๆ บนเว็บไซต์ แอปพลิเคชันเดสก์ท็อป หรือบรรทัดคำสั่งได้โดยอัตโนมัติ
เพื่อเป็นการแสดงความขอบคุณ ฉันจะได้รับความชื่นชมจากข้อบกพร่องใหม่ๆ ด้วยบัตรของขวัญมูลค่า 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 ()
ขั้นแรก ค้นหา @rpapybot บนแอป Telegram ของคุณเพื่ออนุมัติการรับข้อความ
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' )
แชร์ไฟล์อย่างปลอดภัยสูงสุด 100 MB บน PrivateBin ซึ่งจะทำลายตัวเองหลังจาก 1 สัปดาห์
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
หมายเหตุ • ตัวระบุองค์ประกอบ • ฟังก์ชันหลัก • ฟังก์ชันพื้นฐาน • ฟังก์ชัน Pro • ฟังก์ชันตัวช่วย
ดูสคริปต์ Python ตัวอย่าง โซลูชัน RPA Challenge และตัวอย่างร้านขายของชำ RedMart หากต้องการส่งการแจ้งเตือนของแอป Telegram เพียงค้นหา @rpapybot เพื่ออนุญาตให้รับข้อความ หากต้องการทำให้เบราว์เซอร์ Chrome เป็นแบบอัตโนมัติโดยมองไม่เห็น ให้ใช้โหมด headless หากต้องการวิ่งเร็วขึ้น 10 เท่าแทนที่จะเป็นความเร็วปกติของมนุษย์ ให้ใช้โหมดเทอร์โบ (อ่านคำเตือน!) CAPTCHA บางตัวสามารถแก้ไขได้โดยใช้บริการต่างๆ เช่น 2Captcha, Capsolver หรือโดยตรงโดยการจำลองการกระทำของผู้ใช้
แชร์ไฟล์อย่างปลอดภัยสูงสุด 100 MB ด้วยที่เก็บข้อมูลออนไลน์ชั่วคราวในตัวบนเซิร์ฟเวอร์ PrivateBin เฉพาะ คุณยังเรียกใช้ RPA บนเบราว์เซอร์โทรศัพท์ได้โดยใช้สมุดบันทึก Colab นี้ (เช่น Datascraping ที่มีเซสชัน Colab สูงสุด 5 เซสชัน) ด้วยการออกแบบแพ็คเกจนี้มีการรักษาความปลอดภัยระดับองค์กร และคุณสามารถติดตั้ง อัปเดต และใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
ควบคุมการจัดการข้อผิดพลาดอย่างสมบูรณ์โดยการตั้งค่าข้อผิดพลาด (True) เพื่อเพิ่มข้อยกเว้น Python เมื่อเกิดข้อผิดพลาด และจัดการด้วย try-ยกเว้น สำหรับการควบคุมตำแหน่งดาวน์โหลดไฟล์ของเว็บเบราว์เซอร์โดยละเอียด ให้ใช้ download_location() สำหรับการแทนที่ตำแหน่งโฟลเดอร์เริ่มต้นเพื่อติดตั้งและเรียกใช้ TagUI (เวอร์ชันทางแยกที่ปรับให้เหมาะสมสำหรับแพ็คเกจ rpa) ให้ใช้ tagui_location()
หากคุณใช้ระบบปฏิบัติการที่ไม่ใช่ภาษาอังกฤษและได้รับข้อผิดพลาด "ไบต์ต่อเนื่องที่ไม่ถูกต้อง" คุณสามารถตั้งค่าโค้ดเพจให้รองรับ UTF-8 หรือเปลี่ยนการเข้ารหัสของสคริปต์ Python เป็นการเข้ารหัสระบบปฏิบัติการของคุณได้ ดูตัวอย่างนี้สำหรับภาษาจีน ใช้ focus() เพื่อทำให้หน้าต่างแอปพลิเคชัน Windows/Mac อยู่ในโฟกัส (ดูที่นี่สำหรับทางเลือก pywin32)
ผู้ใช้บางรายอาจพบว่าการใช้ AI และการเรียนรู้ของเครื่อง (โดยเฉพาะอย่างยิ่ง LLM ภาษาขนาดใหญ่) เป็นเรื่องที่น่าสนใจหรือมีประโยชน์ เพื่อช่วยสร้างสคริปต์เทมเพลต จากนั้นจึงทำการปรับแต่งอย่างละเอียดตามนั้น ดูปัญหานี้สำหรับคำถามบางข้อที่ฉันถาม Claude 3.5 Sonnet ของ Anthropic และการตอบกลับ
ตัวระบุองค์ประกอบช่วยบอก RPA สำหรับ Python ได้อย่างชัดเจนว่าองค์ประกอบใดบนอินเทอร์เฟซผู้ใช้ที่คุณต้องการโต้ตอบด้วย ตัวอย่างเช่น //*[@id='email'] คือ XPath ที่ชี้ไปยังองค์ประกอบหน้าเว็บที่มีแอตทริบิวต์ id 'email'
สำหรับระบบอัตโนมัติของเว็บ ตัวระบุองค์ประกอบเว็บสามารถเป็นตัวเลือก XPath, ตัวเลือก CSS หรือแอตทริบิวต์ต่อไปนี้ - id, ชื่อ, คลาส, ชื่อ, aria-label, text(), href ในลำดับความสำคัญที่ลดลง แนะนำให้เขียน XPath ด้วยตนเองหรือเพียงแค่ใช้แอตทริบิวต์ มีการรอองค์ประกอบปรากฏขึ้นโดยอัตโนมัติก่อนที่จะหมดเวลา และข้อผิดพลาดจะถูกส่งกลับว่าไม่พบองค์ประกอบนั้น หากต้องการเปลี่ยนการหมดเวลาเริ่มต้น 10 วินาที ให้ใช้ timeout() PS - หากคุณใช้ส่วนขยาย Chrome เพื่ออ่าน XPath ให้ใช้ SelectorsHub
- ตัวระบุองค์ประกอบอาจเป็นสแน็ปช็อตรูปภาพ .png หรือ .bmp ที่แสดงองค์ประกอบ UI (อาจเป็นบนแอปพลิเคชันเดสก์ท็อป หน้าต่างเทอร์มินัล หรือเว็บเบราว์เซอร์) หากไม่มีไฟล์รูปภาพที่ระบุ OCR จะถูกใช้เพื่อค้นหาข้อความนั้นบนหน้าจอเพื่อดำเนินการกับองค์ประกอบ UI ที่มีข้อความ เช่น r.click('Submit Form.png') ความโปร่งใส (ความทึบ 0%) ได้รับการสนับสนุนในภาพ .png สามารถใช้พิกัด x, y ขององค์ประกอบบนหน้าจอได้เช่นกัน หมายเหตุสำหรับการมองเห็นจอภาพ 2 จอโดยอัตโนมัติ และปัญหาการแสดงผล macOS Retina
- ตัวอย่างตัวระบุรูปภาพเพิ่มเติมคือรูปภาพ PNG ของหน้าต่าง (โปรแกรมดู PDF, MS Word, กล่องข้อความ ฯลฯ ) โดยกำหนดให้เนื้อหาตรงกลางของรูปภาพเป็นแบบโปร่งใส ซึ่งช่วยให้สามารถใช้ read() และ snap() เพื่อดำเนินการ OCR และบันทึกสแน็ปช็อตของหน้าต่างแอปพลิเคชัน คอนเทนเนอร์ เฟรม กล่องข้อความที่มีเนื้อหาแตกต่างกัน ดูตัวอย่างรูปภาพของเฟรม PDF ที่เนื้อหาถูกลบออกเพื่อให้โปร่งใส สำหรับการอ่าน() และสแนป() คู่พิกัด 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 |
โดยค่าเริ่มต้น RPA สำหรับ Python จะทำงานด้วยความเร็วปกติของมนุษย์ หากต้องการรันเร็วขึ้น 10 เท่า ให้ใช้ init(turbo_mode = True)
การทำงาน | พารามิเตอร์ | วัตถุประสงค์ |
---|---|---|
url() | webpage_url (ไม่มีพารามิเตอร์ให้ส่งคืน 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 | ถามและส่งคืนอินพุตของผู้ใช้ |
เพื่อรอให้องค์ประกอบปรากฏจนกระทั่งค่าหมดเวลา () ให้ใช้ 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 (ไม่บังคับ) | ตั้งค่า web frame, frame() เพื่อรีเซ็ต |
popup() | string_in_url (ไม่มีพารามิเตอร์ให้รีเซ็ตเป็นหน้าหลัก โดยเฉพาะอย่างยิ่งเมื่อใช้ควบคุมแท็บเบราว์เซอร์อื่น) | ตั้งค่าบริบทเป็นแท็บป๊อปอัปของเว็บ |
run() | command_to_run (ใช้ ; ระหว่างคำสั่ง) | รันคำสั่ง OS และส่งคืนเอาต์พุต |
dom() | statement_to_run (โค้ด JS เพื่อทำงานในเบราว์เซอร์) | เรียกใช้โค้ดใน DOM และส่งคืนเอาต์พุต |
vision() | command_to_run (โค้ด Python สำหรับ SikuliX) | รันคำสั่ง SikuliX แบบกำหนดเอง |
timeout() | timeout_in_seconds (ว่างเปล่าส่งคืนการหมดเวลาปัจจุบัน) | เปลี่ยนการหมดเวลารอ (ค่าเริ่มต้น 10 วินาที) |
ตัวดัดแปลงคีย์บอร์ด () และปุ่มพิเศษ -
[shift] [ctrl] [alt] [win] [cmd] [clear] [space] [enter] [backspace] [tab] [esc] [ขึ้น] [ลง] [ซ้าย] [ขวา] [pageup] [pagedown ] [ลบ] [หน้าแรก] [สิ้นสุด] [แทรก] [f1] .. [f15] [หน้าจอพิมพ์] [scrolllock] [หยุดชั่วคราว] [capslock] [numlock]
การทำงาน | พารามิเตอร์ | วัตถุประสงค์ |
---|---|---|
exist() | element_identifier | จริงหรือเท็จหากองค์ประกอบแสดงก่อนหมดเวลา |
present() | element_identifier | ส่งคืน True หรือ False หากมีองค์ประกอบอยู่ในขณะนี้ |
count() | element_identifier | ส่งกลับจำนวนขององค์ประกอบเว็บเป็นจำนวนเต็ม |
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() | เวลาส่งคืนผ่านไปเป็นวินาทีระหว่างการโทรแบบลอย |
หากต้องการพิมพ์ข้อความจำนวนมากอย่างรวดเร็ว ให้ใช้คลิปบอร์ด() และคีย์บอร์ด() เพื่อวางแทนการพิมพ์ ()
TagUI เป็นซอฟต์แวร์ RPA โอเพ่นซอร์สชั้นนำ ? กับผู้ใช้งานนับหมื่นคน มันถูกสร้างขึ้นในปี 2559-2560 เมื่อฉันลาออกจาก DBS Bank ในตำแหน่งวิศวกรทดสอบระบบอัตโนมัติ เพื่อไปทำงานที่ยุโรปตะวันออกเป็นเวลาหนึ่งปี ฐานโค้ดส่วนใหญ่เขียนด้วยภาษา Novi Sad ประเทศเซอร์เบีย ในปี 2018 ฉันเข้าร่วม AI Singapore เพื่อพัฒนา TagUI ต่อไป
ไม่กี่เดือนต่อมาในปี 2019 ฉันรับหน้าที่พ่อเต็มเวลา ดูแลลูกสาวและภรรยาแรกเกิดของฉัน ??. ในระหว่างพี่เลี้ยงเด็ก ฉันใช้ช่วงเวลาเพื่อสร้างแพ็คเกจ Python นี้ที่สร้างบน TagUI ฉันหวังว่า pip install rpa
จะทำให้ชีวิตง่ายขึ้นสำหรับผู้ใช้ Python จากหลากหลายสาขาอาชีพ
ฉันดูแลรักษาแพ็คเกจ (และ TagUI เวอร์ชันแยกส่วนที่ได้รับการปรับให้เหมาะสม) ในช่วงเวลาส่วนตัวของฉัน แต่ตอนนี้ มาร์เซโล เซซิน, หลุยส์ อเลฮานโดร, ยอซเซฟ ฟูล็อป, โตลานี ไจเย-ติโคโล, ชยาน ชัว, ลอเรนซ์ ลิว, บาลา รังกานาธาน ตัวผมเองคือทีมใหม่ที่ดูแลแพ็คเกจนี้ เราดีใจที่มีคนใช้นับหมื่นคน ?
สำหรับข้อมูลทางเทคนิค โปรดดูสถาปัตยกรรมที่ใช้งานง่ายด้านล่างและความคิดเห็นมากมายในแพ็คเกจไฟล์เดียวนี้
ฉันต้องการให้เครดิตและแสดงความขอบคุณต่อผู้มีส่วนร่วมโอเพ่นซอร์สที่น่าทึ่งเหล่านี้ด้านล่าง ❤️
RPA สำหรับ Python เป็นซอฟต์แวร์โอเพ่นซอร์สที่เผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0
Mindly
ฉันไม่ค่อยให้คำแนะนำผลิตภัณฑ์ ยกเว้นซอฟต์แวร์ OpenRPA ที่น่าทึ่ง และเครื่องมือ RPA แบบโอเพ่นซอร์สที่ฉันทำเอง ฉันอยากจะแนะนำแอป Mindly mindmapping ที่มีอยู่ในโทรศัพท์และ macOS
แผนที่ความคิดเป็นวิธีที่ใช้งานง่ายในการจัดเก็บ จัดระเบียบ และเรียกค้นข้อมูล เนื่องจากเป็นการเลียนแบบวิธีการทำงานของจิตใจ ซึ่งก็คือความสัมพันธ์ระหว่างแนวคิดและความทรงจำที่แตกต่างกัน การใช้เวลาอย่างมีประสิทธิผลในระหว่างการเดินทางถือเป็นเรื่องที่สมบูรณ์แบบ
ภาพด้านล่างเป็นตัวอย่างเกี่ยวกับคุณประโยชน์ของกาแฟอย่าง Mindly โดยส่วนตัวแล้วฉันใช้มันเพื่อวางแผนชีวิตของฉันในอีก 13 ปีข้างหน้า สะท้อนถึงวิธีการเป็นสามีที่ดีขึ้น บันทึกรายการอาหารอังกฤษแบบดั้งเดิม เก็บบาร์โค้ดของสมาชิกซูเปอร์มาร์เก็ต รวมถึงการจดบันทึกขณะเดินทาง มีแผนที่ความคิดให้ลูกสาว 3YO ของฉันเล่นด้วย เธอแค่สนุกกับการลากโหนดลงในถังขยะ ดังนั้นฉันจึงสร้างแผนที่ความคิดจำลองขึ้นมาเพื่อเตรียมพร้อมที่เธอสามารถทำลายได้
เหนือสิ่งอื่นใด เวอร์ชันฟรีควรตอบสนองความต้องการของผู้ใช้ส่วนใหญ่ ฉันไม่ได้เกินขีดจำกัดฟรี 100 โหนดต่อ mindmap แต่ฉันซื้อมันค่อนข้างเร็วหลังจากใช้งาน เพื่อสนับสนุนการทำงานของทีมงานที่อยู่เบื้องหลังแอปนี้
ป.ล. - ฉันไม่รู้จักทีมของ Mindly แค่แนะนำแอปที่นี่เพราะมันเจ๋งมาก