v1.50 • Casos de uso • Referencia de API • Acerca de y créditos • Prueba en la nube • Vídeo de PyCon • Chat de Telegram •中文• हिन्दी • Español • Français • عربى • বাংলা • Русский • Português • Bahasa • Deutsch • Más..
Para instalar este paquete de Python para RPA (automatización de procesos robóticos):
pip install rpa
Para usarlo en el cuaderno Jupyter, el script Python o el shell interactivo:
import rpa as r
Notas sobre sistemas operativos y modo de automatización visual opcional -
¡La API simple y poderosa de RPA para Python hace que la automatización de procesos robóticos sea divertida! Puede usarlo para automatizar rápidamente tareas repetitivas que consumen mucho tiempo en sitios web, aplicaciones de escritorio o la línea de comandos.
Como muestra de mi agradecimiento, cualquier error nuevo reportado será apreciado con una tarjeta de regalo de 200 dólares de su comerciante preferido. Cualquier sugerencia de función aceptada será apreciada con una tarjeta de regalo de 100 dólares estadounidenses.
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 ()
Primero, busque @rpapybot en su aplicación Telegram para aprobar la recepción de mensajes.
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' )
comparta de forma segura archivos de hasta 100 MB en PrivateBin, que se autodestruirá después de 1 semana
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
Notas • Identificadores de elementos • Funciones principales • Funciones básicas • Funciones profesionales • Funciones auxiliares
Vea un script de Python de muestra, la solución RPA Challenge y un ejemplo de comestibles de RedMart. Para enviar una notificación de la aplicación Telegram, simplemente busque @rpapybot para permitir la recepción de mensajes. Para automatizar el navegador Chrome de forma invisible, utilice el modo sin cabeza. Para correr 10 veces más rápido en lugar de la velocidad humana normal, usa el modo turbo (¡lee las advertencias!). Algunos CAPTCHA se pueden resolver utilizando servicios como 2Captcha, Capsolver o directamente replicando las acciones del usuario.
Comparta de forma segura archivos de hasta 100 MB con almacenamiento temporal en línea integrado, en un servidor PrivateBin dedicado. Incluso puede ejecutar RPA en el navegador de su teléfono usando esta computadora portátil Colab (por ejemplo, extracción de datos con hasta 5 sesiones de Colab). Por diseño, este paquete tiene seguridad empresarial y puede instalarlo, actualizarlo y usarlo sin Internet.
Controle completamente el manejo de errores configurando error(True) para generar una excepción de Python en caso de error y adminístrelo con try-except. Para un control detallado de la ubicación de descarga de archivos del navegador web, utilice download_location(). Para anular la ubicación de la carpeta predeterminada para instalar e invocar TagUI (una versión bifurcada optimizada para el paquete rpa), use tagui_location().
Si está utilizando un sistema operativo que no está en inglés y obtiene el error "byte de continuación no válido", puede configurar la página de códigos para que admita UTF-8 o cambiar la codificación de su secuencia de comandos Python a la codificación de su sistema operativo. Vea este ejemplo para chino. Utilice focus() para hacer que las ventanas de aplicaciones de Windows/Mac estén enfocadas (consulte aquí la alternativa a pywin32).
A algunos usuarios les puede resultar interesante o útil utilizar la IA y el aprendizaje automático (en particular, los modelos de lenguaje grande LLM) para ayudar a generar una plantilla de script y luego realizar los ajustes correspondientes. Consulte este número sobre algunas preguntas que le hice al Soneto Claude 3.5 de Anthropic y sus respuestas.
Un identificador de elemento ayuda a indicarle a RPA para Python exactamente con qué elemento de la interfaz de usuario desea interactuar. Por ejemplo, //*[@id='email'] es un XPath que apunta al elemento de la página web que tiene el atributo de identificación 'email'.
Para la automatización web, el identificador del elemento web puede ser un selector XPath, un selector CSS o los siguientes atributos: id, nombre, clase, título, aria-label, text(), href, en orden decreciente de prioridad. Recomiendo escribir XPath manualmente o simplemente usando atributos. Hay una espera automática a que aparezca un elemento antes de que se agote el tiempo de espera y se devuelve el error de que no se puede encontrar el elemento. Para cambiar el tiempo de espera predeterminado de 10 segundos, utilice timeout(). PD: si está utilizando una extensión de Chrome para leer XPath, utilice SelectorsHub.
? Un identificador de elemento también puede ser una instantánea de imagen .png o .bmp que representa el elemento de la interfaz de usuario (puede estar en aplicaciones de escritorio, ventana de terminal o navegador web). Si el archivo de imagen especificado no existe, se utilizará OCR para buscar ese texto en la pantalla para actuar sobre el elemento de la interfaz de usuario que contiene el texto, por ejemplo, r.click('Enviar formulario.png'). La transparencia (0% de opacidad) se admite en imágenes .png. También se pueden utilizar las coordenadas x, y de los elementos en la pantalla. Notas para automatizar visualmente 2 monitores y problema de pantalla macOS Retina.
? Otro ejemplo de identificador de imagen es una imagen png de una ventana (visor de PDF, MS Word, cuadro de texto, etc.) con el contenido central de la imagen configurado como transparente. Esto permite usar read() y snap() para realizar OCR y guardar instantáneas de ventanas, contenedores, marcos y cuadros de texto de aplicaciones con contenido variable. Vea este ejemplo de imagen de un marco PDF con contenido eliminado para que sea transparente. Para read() y snap(), el par de coordenadas x1, y1, x2, y2 se puede utilizar para definir la región de interés en la pantalla para realizar OCR o capturar una instantánea.
Función | Parámetros | Objetivo |
---|---|---|
init() | visual_automation=False , chrome_browser=True | inicie TagUI, configuración automática en la primera ejecución |
close() | cerrar TagUI, navegador Chrome, SikuliX | |
pack() | para implementar el paquete sin internet | |
update() | para actualizar el paquete sin internet | |
error() | True o False | establecido en True para generar una excepción en caso de error |
debug() | True o False o text_to_log | imprima y registre información de depuración en rpa_python.log |
De forma predeterminada, RPA para Python se ejecuta a la velocidad humana normal, para ejecutarlo 10 veces más rápido use init(turbo_mode = True)
Función | Parámetros | Objetivo |
---|---|---|
url() | webpage_url (sin parámetro para devolver la URL actual) | ir a la URL web |
click() | element_identifier (o x, y usando automatización visual) | haga clic izquierdo en el elemento |
rclick() | element_identifier (o x, y usando automatización visual) | haga clic derecho en el elemento |
dclick() | element_identifier (o x, y usando automatización visual) | haga doble clic en el elemento |
hover() | element_identifier (o x, y usando automatización visual) | mover el mouse al elemento |
type() | element_identifier (o x, y), text ( '[enter]' / '[clear]' ) | ingrese texto en el elemento |
select() | element_identifier (o x, y), value or text (o x, y) | elegir la opción desplegable |
read() | element_identifier ( 'page' es una página web) (o x1, y1, x2, y2) | texto del elemento de retorno |
snap() | element_identifier ( 'page' es una página web), filename_to_save | guardar captura de pantalla en un archivo |
load() | filename_to_load | devolver el contenido del archivo |
dump() | text_to_dump , filename_to_save | guardar texto en un archivo |
write() | text_to_write , filename_to_save | agregar texto al archivo |
ask() | text_to_prompt | preguntar y devolver la entrada del usuario |
para esperar a que aparezca un elemento hasta el valor de tiempo de espera(), utilice hover(). para arrastrar y soltar, hazlo de esta manera
Función | Parámetros | Objetivo |
---|---|---|
telegram() | telegram_id , text_to_send (primero busque @rpapybot) | enviar mensaje de Telegram |
keyboard() | keys_and_modifiers (usando automatización visual) | enviar pulsaciones de teclas a la pantalla |
mouse() | 'down' o 'up' (usando automatización visual) | enviar evento del mouse a la pantalla |
focus() | app_to_focus (nombre completo de la aplicación) | hacer la aplicación en foco |
wait() | delay_in_seconds (predeterminado 5 segundos) | esperar explícitamente por algún tiempo |
table() | table number o XPath , filename_to_save | guardar la tabla de la página web en CSV |
bin() | file_to_bin , password (opcional pero recomendada) | almacenamiento temporal seguro |
upload() | element_identifier (CSS), filename_to_upload | subir archivo al elemento web |
download() | download_url , filename_to_save (opcional) | descargar desde URL al archivo |
unzip() | file_to_unzip , unzip_location (opcional) | descomprimir el archivo zip en la ubicación especificada |
frame() | main_frame id or name , sub_frame (opcional) | establecer marco web, marco () para restablecer |
popup() | string_in_url (sin parámetro para restablecer a la página principal, especialmente importante cuando se usa para controlar otra pestaña del navegador) | establecer contexto para la pestaña emergente web |
run() | command_to_run (uso ; entre comandos) | ejecutar el comando del sistema operativo y devolver la salida |
dom() | statement_to_run (código JS para ejecutar en el navegador) | ejecutar código en DOM y devolver salida |
vision() | command_to_run (código Python para SikuliX) | ejecutar comandos personalizados de SikuliX |
timeout() | timeout_in_seconds (el espacio en blanco devuelve el tiempo de espera actual) | cambiar el tiempo de espera (predeterminado 10 segundos) |
modificadores de teclado() y teclas especiales -
[mayúsculas] [ctrl] [alt] [win] [cmd] [borrar] [espacio] [entrar] [retroceso] [tabulación] [esc] [arriba] [abajo] [izquierda] [derecha] [arriba página] [abajo página ] [eliminar] [inicio] [fin] [insertar] [f1] .. [f15] [imprimir pantalla] [bloqueo de desplazamiento] [pausa] [bloqueo de mayúsculas] [bloqueo numérico]
Función | Parámetros | Objetivo |
---|---|---|
exist() | element_identifier | Verdadero o Falso si el elemento se muestra antes del tiempo de espera |
present() | element_identifier | devuelve Verdadero o Falso si el elemento está presente ahora |
count() | element_identifier | devolver el número de elementos web como un número entero |
clipboard() | text_to_put o sin parámetro | poner texto o devolver el texto del portapapeles como cadena |
get_text() | source_text , left , right , count=1 | devolver texto entre los marcadores izquierdo y derecho |
del_chars() | source_text , characters | devolver texto después de eliminar caracteres dados |
mouse_xy() | devuelve las coordenadas '(x,y)' del mouse como una cadena | |
mouse_x() | devolver la coordenada x del mouse como un número entero | |
mouse_y() | devolver la coordenada y del mouse como un número entero | |
title() | devolver el título de la página web actual como una cadena | |
text() | devolver el contenido de texto de la página web actual como una cadena | |
timer() | tiempo de retorno transcurrido en segundos entre llamadas como flotante |
para escribir una gran cantidad de texto rápidamente, use el portapapeles() y el teclado() para pegar en lugar de escribir()
¿TagUI es un software RPA de código abierto líder? con decenas de miles de usuarios. Se creó en 2016-2017 cuando dejé DBS Bank como ingeniero de automatización de pruebas, para un año sabático en Europa del Este. La mayor parte de su código base fue escrito en Novi Sad Serbia. En 2018, me uní a AI Singapore para continuar con el desarrollo de TagUI.
Durante unos meses en 2019, asumí el papel de padre a tiempo completo, cuidando a mi bebé recién nacido y a mi esposa. Mientras trabajaba como niñera, usé mi tiempo para crear este paquete de Python integrado en TagUI. Espero que pip install rpa
haga la vida más fácil a los usuarios de Python de diferentes ámbitos de la vida.
Había estado manteniendo el paquete (y una versión bifurcada de TagUI optimizada para él) en mi tiempo personal. Pero ahora, Marcelo Cecin, Luis Alejandro, Jozsef Fulop, Tolani Jaiye-Tikolo, Shyan Chua, Laurence Liew, Bala Ranganathan y yo somos el nuevo equipo que mantiene este paquete. ¿Estamos contentos de que decenas de miles de personas lo utilicen?
Para obtener información técnica, consulte su arquitectura intuitiva a continuación y numerosos comentarios en este paquete de un solo archivo.
Me gustaría dar crédito y expresar mi agradecimiento a estos increíbles contribuyentes de código abierto a continuación ❤️
RPA para Python es un software de código abierto lanzado bajo la licencia Apache 2.0
Mindly
Rara vez hago recomendaciones de productos, aparte del increíble software OpenRPA y las herramientas RPA de código abierto en las que trabajé personalmente. Me gustaría recomendar la aplicación de mapas mentales Mindly disponible en teléfonos y macOS.
Un mapa mental es una forma intuitiva de almacenar, organizar y recuperar información, ya que imita cómo funciona la mente: las relaciones entre diferentes conceptos y recuerdos. Es perfecto para hacer un uso productivo del tiempo mientras viaja.
La imagen de abajo es un ejemplo de Mindly sobre los beneficios del café. Personalmente lo uso para planificar mi vida durante los próximos 13 años, reflexionar sobre cómo ser un mejor esposo, mantener una lista de comidas tradicionales británicas, almacenar códigos de barras de miembros de supermercados y tomar notas sobre la marcha. Incluso hay un mapa mental con el que puede jugar mi hija de 3 años; simplemente le gusta arrastrar los nodos a la papelera. Así que creé un mapa mental ficticio en espera que ella puede destruir.
Lo mejor de todo es que la versión gratuita debería satisfacer las necesidades de la mayoría de los usuarios. No excedí el límite gratuito de 100 nodos por mapa mental, pero lo compré bastante pronto después de usarlo, para respaldar el trabajo del equipo detrás de esta aplicación.
PD: No conozco el equipo de Mindly, solo recomiendo la aplicación aquí porque es excelente.