v1.50 • Cas d'utilisation • Référence API • À propos et crédits • Essayez sur le cloud • Vidéo PyCon • Chat Telegram •中文• हिन्दी • Español • Français • عربى • বাংলা • Русский • Português • Bahasa • Deutsch • Plus..
Pour installer ce package Python pour RPA (automatisation des processus robotiques) -
pip install rpa
Pour l'utiliser dans un notebook Jupyter, un script Python ou un shell interactif -
import rpa as r
Notes sur les systèmes d'exploitation et le mode d'automatisation visuelle en option -
L'API simple et puissante de RPA pour Python rend l'automatisation des processus robotiques amusante ! Vous pouvez l'utiliser pour automatiser rapidement les tâches répétitives et fastidieuses sur les sites Web, les applications de bureau ou la ligne de commande.
En guise de remerciement, tout nouveau bug signalé sera récompensé par une carte cadeau de 200 US$ auprès de votre marchand préféré. Toute suggestion de fonctionnalité acceptée sera appréciée avec une carte-cadeau de 100 $ US.
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 ()
tout d'abord, recherchez @rpapybot sur votre application Telegram pour approuver la réception de messages
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' )
partagez en toute sécurité des fichiers jusqu'à 100 Mo sur PrivateBin, qui s'autodétruira après 1 semaine
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
Remarques • Identificateurs d'éléments • Fonctions de base • Fonctions de base • Fonctions professionnelles • Fonctions d'assistance
Consultez un exemple de script Python, la solution RPA Challenge et l'exemple d'épicerie RedMart. Pour envoyer une notification à l'application Telegram, recherchez simplement @rpapybot pour autoriser la réception de messages. Pour automatiser le navigateur Chrome de manière invisible, utilisez le mode sans tête. Pour courir 10 fois plus vite que la vitesse humaine normale, utilisez le mode turbo (lisez les mises en garde !). Certains CAPTCHA peuvent être résolus à l'aide de services comme 2Captcha, Capsolver ou directement en répliquant les actions de l'utilisateur.
Partagez en toute sécurité des fichiers jusqu'à 100 Mo avec un stockage en ligne temporaire intégré, sur un serveur PrivateBin dédié. Vous pouvez même exécuter RPA sur le navigateur de votre téléphone à l'aide de ce notebook Colab (par exemple, datascraping avec jusqu'à 5 sessions Colab). De par sa conception, ce package offre une sécurité d'entreprise et vous pouvez l'installer, le mettre à jour et l'utiliser sans Internet.
Contrôlez entièrement la gestion des erreurs en définissant error(True) pour déclencher une exception Python en cas d'erreur et gérez avec try-sauf. Pour un contrôle précis de l'emplacement de téléchargement des fichiers du navigateur Web, utilisez download_location(). Pour remplacer l'emplacement du dossier par défaut pour installer et appeler TagUI (une version forkée optimisée pour le package rpa), utilisez tagui_location().
Si vous utilisez un système d'exploitation non anglais et obtenez l'erreur « octet de continuation invalide », vous pouvez définir la page de codes pour prendre en charge UTF-8 ou modifier l'encodage de votre script Python par l'encodage de votre système d'exploitation. Voir cet exemple pour le chinois. Utilisez focus() pour que les fenêtres des applications Windows/Mac soient mises au point (voir ici pour l'alternative pywin32).
Certains utilisateurs peuvent trouver intéressant ou utile d'utiliser l'IA et l'apprentissage automatique (en particulier les grands modèles de langage LLM) pour générer un modèle de script, puis procéder aux ajustements en conséquence. Voir ce numéro sur quelques questions que j'ai posées à Claude 3.5 Sonnet d'Anthropic et ses réponses.
Un identifiant d'élément permet d'indiquer à RPA pour Python exactement avec quel élément de l'interface utilisateur vous souhaitez interagir. Par exemple, //*[@id='email'] est un XPath pointant vers l'élément de page Web ayant l'attribut id 'email'.
Pour l'automatisation Web, l'identifiant de l'élément Web peut être un sélecteur XPath, un sélecteur CSS ou les attributs suivants : id, nom, classe, titre, aria-label, text(), href, par ordre de priorité décroissant. Recommandez d'écrire XPath manuellement ou simplement en utilisant des attributs. Il y a une attente automatique qu'un élément apparaisse avant l'expiration du délai et une erreur est renvoyée indiquant que l'élément est introuvable. Pour modifier le délai d'expiration par défaut de 10 secondes, utilisez timeout(). PS - si vous utilisez une extension Chrome pour lire les XPaths, utilisez SelectorsHub.
? Un identifiant d'élément peut également être un instantané d'image .png ou .bmp représentant l'élément d'interface utilisateur (peut être sur des applications de bureau, une fenêtre de terminal ou un navigateur Web). Si le fichier image spécifié n'existe pas, l'OCR sera utilisé pour rechercher ce texte sur l'écran afin d'agir sur l'élément d'interface utilisateur contenant le texte, par exemple r.click('Submit Form.png'). La transparence (opacité de 0 %) est prise en charge dans les images .png. Les coordonnées x, y des éléments à l'écran peuvent également être utilisées. Notes pour l'automatisation visuelle de 2 moniteurs et problème d'affichage macOS Retina.
? Un autre exemple d'identifiant d'image est une image png d'une fenêtre (visionneuse PDF, MS Word, zone de texte, etc.) avec le contenu central de l'image défini comme transparent. Cela permet d'utiliser read() et snap() pour effectuer une OCR et enregistrer des instantanés de fenêtres d'application, de conteneurs, de cadres et de zones de texte avec un contenu variable. Voir cet exemple d'image d'un cadre PDF dont le contenu a été supprimé pour être transparent. Pour read() et snap(), la paire de coordonnées x1, y1, x2, y2 peut être utilisée pour définir la région d'intérêt sur l'écran afin d'effectuer une OCR ou de capturer un instantané.
Fonction | Paramètres | But |
---|---|---|
init() | visual_automation=False , chrome_browser=True | démarrer TagUI, configuration automatique lors de la première exécution |
close() | fermer TagUI, navigateur Chrome, SikuliX | |
pack() | pour déployer un package sans Internet | |
update() | pour mettre à jour le forfait sans Internet | |
error() | True ou False | défini sur True pour déclencher une exception en cas d'erreur |
debug() | True ou False ou text_to_log | imprimer et enregistrer les informations de débogage dans rpa_python.log |
par défaut, RPA pour Python s'exécute à une vitesse humaine normale, pour une exécution 10 fois plus rapide, utilisez init(turbo_mode = True)
Fonction | Paramètres | But |
---|---|---|
url() | webpage_url (aucun paramètre pour renvoyer l'URL actuelle) | aller à l'URL Web |
click() | element_identifier (ou x, y en utilisant l'automatisation visuelle) | clic gauche sur l'élément |
rclick() | element_identifier (ou x, y en utilisant l'automatisation visuelle) | clic droit sur l'élément |
dclick() | element_identifier (ou x, y en utilisant l'automatisation visuelle) | double-cliquez sur l'élément |
hover() | element_identifier (ou x, y en utilisant l'automatisation visuelle) | déplacer la souris sur l'élément |
type() | element_identifier (ou x, y), text ( '[enter]' / '[clear]' ) | saisir du texte au niveau de l'élément |
select() | element_identifier (ou x, y), value or text (ou x, y) | choisissez l'option déroulante |
read() | element_identifier ( 'page' est une page Web) (ou x1, y1, x2, y2) | renvoyer le texte de l'élément |
snap() | element_identifier ( 'page' est une page Web), filename_to_save | enregistrer la capture d'écran dans un fichier |
load() | filename_to_load | renvoyer le contenu du fichier |
dump() | text_to_dump , filename_to_save | enregistrer le texte dans un fichier |
write() | text_to_write , filename_to_save | ajouter du texte au fichier |
ask() | text_to_prompt | demander et renvoyer l'entrée de l'utilisateur |
pour attendre qu'un élément apparaisse jusqu'à la valeur timeout(), utilisez hover(). pour glisser-déposer, faites-le de cette façon
Fonction | Paramètres | But |
---|---|---|
telegram() | telegram_id , text_to_send (première recherche sur @rpapybot) | envoyer un message télégramme |
keyboard() | keys_and_modifiers (en utilisant l'automatisation visuelle) | envoyer les frappes à l'écran |
mouse() | 'down' ou 'up' (en utilisant l'automatisation visuelle) | envoyer l'événement de la souris à l'écran |
focus() | app_to_focus (nom complet de l'application) | mettre l'accent sur la candidature |
wait() | delay_in_seconds (par défaut 5 secondes) | attendre explicitement un certain temps |
table() | table number ou XPath , filename_to_save | enregistrer le tableau de la page Web au format CSV |
bin() | file_to_bin , password (facultatif mais recommandé) | stockage temporaire sécurisé |
upload() | element_identifier (CSS), filename_to_upload | télécharger le fichier sur l'élément Web |
download() | download_url , filename_to_save (facultatif) | télécharger depuis l'URL vers le fichier |
unzip() | file_to_unzip , unzip_location (facultatif) | décompresser le fichier zip à l'emplacement spécifié |
frame() | main_frame id or name , sub_frame (facultatif) | définir le cadre Web, frame() pour réinitialiser |
popup() | string_in_url (aucun paramètre à réinitialiser à la page principale, particulièrement important lorsqu'il est utilisé pour contrôler un autre onglet du navigateur) | définir le contexte de l'onglet contextuel Web |
run() | command_to_run (utilisez ; entre les commandes) | exécuter la commande du système d'exploitation et renvoyer la sortie |
dom() | statement_to_run (code JS à exécuter dans le navigateur) | exécuter le code dans le DOM et renvoyer la sortie |
vision() | command_to_run (code Python pour SikuliX) | exécuter des commandes SikuliX personnalisées |
timeout() | timeout_in_seconds (le blanc renvoie le délai d'attente actuel) | modifier le délai d'attente (10 s par défaut) |
modificateurs Keyboard() et touches spéciales -
[shift] [ctrl] [alt] [win] [cmd] [clear] [espace] [enter] [backspace] [tab] [esc] [haut] [bas] [gauche] [droite] [pageup] [pagedown ] [supprimer] [accueil] [fin] [insérer] [f1] .. [f15] [écran d'impression] [scrolllock] [pause] [capslock] [numlock]
Fonction | Paramètres | But |
---|---|---|
exist() | element_identifier | Vrai ou Faux si l'élément s'affiche avant l'expiration du délai |
present() | element_identifier | renvoie True ou False si l'élément est présent maintenant |
count() | element_identifier | renvoyer le nombre d'éléments Web sous forme d'entier |
clipboard() | text_to_put ou aucun paramètre | mettre du texte ou renvoyer le texte du presse-papiers sous forme de chaîne |
get_text() | source_text , left , right , count=1 | renvoyer le texte entre les marqueurs gauche et droit |
del_chars() | source_text , characters | renvoyer le texte après avoir supprimé les caractères donnés |
mouse_xy() | renvoyer les coordonnées '(x,y)' de la souris sous forme de chaîne | |
mouse_x() | renvoyer la coordonnée x de la souris sous forme d'entier | |
mouse_y() | renvoyer la coordonnée y de la souris sous forme d'entier | |
title() | renvoyer le titre de la page Web actuelle sous forme de chaîne | |
text() | renvoyer le contenu textuel de la page Web actuelle sous forme de chaîne | |
timer() | renvoie le temps écoulé en secondes entre les appels en tant que float |
pour taper rapidement une grande quantité de texte, utilisez clipboard() et Keyboard() pour coller au lieu de type()
TagUI est un logiciel RPA open source leader ? avec des dizaines de milliers d'utilisateurs. Elle a été créée en 2016-2017 lorsque j'ai quitté DBS Bank en tant qu'ingénieur en automatisation des tests, pour un an sabbatique en Europe de l'Est. La majeure partie de sa base de code a été écrite à Novi Sad en Serbie. En 2018, j'ai rejoint AI Singapore pour poursuivre le développement de TagUI.
Pendant quelques mois en 2019, j'ai assumé le rôle de papa à plein temps, m'occupant de ma petite fille nouveau-née et de ma femme ??. Entre deux tâches de nounou, j'ai utilisé mon temps libre pour créer ce package Python construit sur TagUI. J'espère que pip install rpa
facilitera la vie des utilisateurs de Python de différents horizons.
J'avais maintenu le package (et une version forkée de TagUI optimisée pour cela) pendant mon temps personnel. Mais maintenant, Marcelo Cecin, Luis Alejandro, Jozsef Fulop, Tolani Jaiye-Tikolo, Shyan Chua, Laurence Liew, Bala Ranganathan et moi-même sommes la nouvelle équipe qui maintient ce package. Nous sommes heureux que des dizaines de milliers de personnes l'utilisent ?
Pour des informations techniques, consultez son architecture intuitive ci-dessous et de nombreux commentaires dans ce package à fichier unique.
Je voudrais remercier et exprimer mon appréciation à ces incroyables contributeurs open source ci-dessous ❤️
RPA pour Python est un logiciel open source publié sous licence Apache 2.0
Mindly
Je fais rarement des recommandations de produits, autres que l'incroyable logiciel OpenRPA et les outils RPA open source sur lesquels j'ai personnellement travaillé. J'aimerais recommander l'application Mindly mindmapping disponible sur téléphone et macOS.
Une carte mentale est un moyen intuitif de stocker, d'organiser et de récupérer des informations, car elle imite le fonctionnement de l'esprit : les relations entre différents concepts et souvenirs. C'est parfait pour utiliser de manière productive les poches de temps en déplacement.
L'image ci-dessous est un exemple Mindly sur les avantages du café. Personnellement, je l'utilise pour planifier ma vie pour les 13 prochaines années, réfléchir à la façon d'être un meilleur mari, tenir une liste d'aliments britanniques traditionnels, stocker les codes-barres des membres des supermarchés et prendre des notes en déplacement. Il y a même une carte mentale avec laquelle ma fille de 3 ans peut jouer, elle aime juste faire glisser les nœuds dans la poubelle. J'ai donc créé une carte mentale factice en attente qu'elle peut détruire.
Mieux encore, la version gratuite devrait répondre aux besoins de la plupart des utilisateurs. Je n'ai pas dépassé la limite gratuite de 100 nœuds par mindmap, mais je l'ai acheté assez tôt après l'avoir utilisée, pour soutenir le travail de l'équipe derrière cette application.
PS - Je ne connais pas l'équipe de Mindly, je recommande juste l'application ici parce qu'elle est géniale