v1.50 • Casos de uso • Referência da API • Sobre e créditos • Experimente na nuvem • Vídeo PyCon • Telegram Chat •中文• हिन्दी • Español • Français • عربى • বাংলা • Русский • Português • Bahasa • Deutsch • Mais..
Para instalar este pacote Python para RPA (automação de processos robóticos) -
pip install rpa
Para usá-lo no notebook Jupyter, script Python ou shell interativo -
import rpa as r
Notas sobre sistemas operacionais e modo de automação visual opcional -
A API simples e poderosa do RPA para Python torna a automação de processos robóticos divertida! Você pode usá-lo para automatizar rapidamente tarefas repetitivas e demoradas em sites, aplicativos de desktop ou linha de comando.
Como forma de agradecimento, qualquer novo bug relatado será apreciado com um vale-presente de US$ 200 do comerciante de sua preferência. Qualquer sugestão de recurso aceita será apreciada com um vale-presente de US$ 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 ()
primeiro, procure @rpapybot em seu aplicativo Telegram para aprovar o recebimento de mensagens
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' )
compartilhe com segurança arquivos de até 100 MB no PrivateBin, que se autodestruirá após 1 semana
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
Notas • Identificadores de elemento • Funções principais • Funções básicas • Funções profissionais • Funções auxiliares
Veja o exemplo de script Python, a solução RPA Challenge e o exemplo de mantimentos RedMart. Para enviar uma notificação do aplicativo Telegram, basta procurar @rpapybot para permitir o recebimento de mensagens. Para automatizar o navegador Chrome de forma invisível, use o modo headless. Para correr 10X mais rápido em vez da velocidade humana normal, use o modo turbo (leia as advertências!). Alguns CAPTCHAs podem ser resolvidos usando serviços como 2Captcha, Capsolver ou diretamente replicando as ações do usuário.
Compartilhe com segurança arquivos de até 100 MB com armazenamento on-line temporário integrado, em um servidor PrivateBin dedicado. Você pode até executar RPA no navegador do seu telefone usando este notebook Colab (por exemplo, datascraping com até 5 sessões Colab). Por design, este pacote possui segurança empresarial e você pode instalá-lo, atualizá-lo e usá-lo sem a Internet.
Controle totalmente o tratamento de erros definindo error(True) para gerar exceção Python em caso de erro e gerencie com try-except. Para um controle detalhado do local de download de arquivos do navegador da web, use download_location(). Para substituir o local da pasta padrão para instalar e invocar TagUI (uma versão bifurcada otimizada para pacote rpa), use tagui_location().
Se você estiver usando um sistema operacional que não seja o inglês e obtiver o erro "byte de continuação inválido", poderá definir a página de código para suportar UTF-8 ou alterar a codificação do seu script Python para a codificação do seu sistema operacional. Veja este exemplo para chinês. Use focus() para deixar as janelas de aplicativos Windows/Mac em foco (veja aqui a alternativa pywin32).
Alguns usuários podem achar interessante ou útil usar IA e aprendizado de máquina (em particular modelos de linguagem LLM grandes) para ajudar a gerar um script de modelo e, em seguida, fazem o ajuste fino de acordo. Veja esta edição sobre algumas perguntas que fiz ao Soneto Claude 3.5 da Anthropic e suas respostas.
Um identificador de elemento ajuda a informar ao RPA para Python exatamente com qual elemento da interface do usuário você deseja interagir. Por exemplo, //*[@id='email'] é um XPath apontando para o elemento da página da web que possui o atributo id 'email'.
Para automação web, o identificador do elemento web pode ser seletor XPath, seletor CSS ou os seguintes atributos - id, nome, classe, título, aria-label, text(), href, em ordem decrescente de prioridade. Recomendamos escrever XPath manualmente ou simplesmente usando atributos. Há uma espera automática para que um elemento apareça antes que o tempo limite atinja e é retornado um erro informando que o elemento não pode ser encontrado. Para alterar o tempo limite padrão de 10 segundos, use timeout(). PS - se você estiver usando uma extensão do Chrome para ler XPaths, use SelectorsHub.
? Um identificador de elemento também pode ser um instantâneo de imagem .png ou .bmp representando o elemento da UI (pode estar em aplicativos de desktop, janela de terminal ou navegador da web). Se o arquivo de imagem especificado não existir, o OCR será usado para procurar esse texto na tela para atuar no elemento da UI que contém o texto, por exemplo, r.click('Submit Form.png'). A transparência (0% de opacidade) é suportada em imagens .png. As coordenadas x, y dos elementos na tela também podem ser usadas. Notas para automatizar visualmente 2 monitores e problema de exibição do macOS Retina.
? Outro exemplo de identificador de imagem é uma imagem png de uma janela (visualizador de PDF, MS Word, caixa de texto, etc.) com o conteúdo central da imagem definido como transparente. Isso permite usar read() e snap() para realizar OCR e salvar instantâneos de janelas de aplicativos, contêineres, quadros e caixas de texto com conteúdo variado. Veja este exemplo de imagem de um quadro de PDF com conteúdo removido para ficar transparente. Para read() e snap(), o par de coordenadas x1, y1, x2, y2 pode ser usado para definir a região de interesse na tela para realizar OCR ou capturar instantâneo.
Função | Parâmetros | Propósito |
---|---|---|
init() | visual_automation=False , chrome_browser=True | inicie TagUI, configuração automática na primeira execução |
close() | feche TagUI, navegador Chrome, SikuliX | |
pack() | para implantar pacote sem internet | |
update() | para atualizar pacote sem internet | |
error() | True ou False | definido como True para gerar exceção em caso de erro |
debug() | True ou False ou text_to_log | imprimir e registrar informações de depuração em rpa_python.log |
por padrão, o RPA para Python é executado em velocidade humana normal, para executar 10 vezes mais rápido, use init(turbo_mode = True)
Função | Parâmetros | Propósito |
---|---|---|
url() | webpage_url (nenhum parâmetro para retornar o URL atual) | vá para o URL da web |
click() | element_identifier (ou x, y usando automação visual) | clique com o botão esquerdo no elemento |
rclick() | element_identifier (ou x, y usando automação visual) | clique com o botão direito no elemento |
dclick() | element_identifier (ou x, y usando automação visual) | clique duas vezes no elemento |
hover() | element_identifier (ou x, y usando automação visual) | mova o mouse para o elemento |
type() | element_identifier (ou x, y), text ( '[enter]' / '[clear]' ) | insira o texto no elemento |
select() | element_identifier (ou x, y), value or text (ou x, y) | escolha a opção suspensa |
read() | element_identifier ( 'page' é uma página da web) (ou x1, y1, x2, y2) | retornar texto do elemento |
snap() | element_identifier ( 'page' é uma página da web), filename_to_save | salvar captura de tela em arquivo |
load() | filename_to_load | retornar conteúdo do arquivo |
dump() | text_to_dump , filename_to_save | salvar texto em arquivo |
write() | text_to_write , filename_to_save | anexar texto ao arquivo |
ask() | text_to_prompt | perguntar e retornar a entrada do usuário |
para esperar que um elemento apareça até o valor timeout(), use hover(). para arrastar e soltar, faça desta forma
Função | Parâmetros | Propósito |
---|---|---|
telegram() | telegram_id , text_to_send (primeiro procure @rpapybot) | enviar mensagem de telegrama |
keyboard() | keys_and_modifiers (usando automação visual) | enviar teclas digitadas para a tela |
mouse() | 'down' ou 'up' (usando automação visual) | enviar evento do mouse para tela |
focus() | app_to_focus (nome completo do aplicativo) | coloque a aplicação em foco |
wait() | delay_in_seconds (padrão 5 segundos) | esperar explicitamente por algum tempo |
table() | table number ou XPath , filename_to_save | salvar tabela de páginas da web em CSV |
bin() | file_to_bin , password (opcional, mas recomendado) | armazenamento temporário seguro |
upload() | element_identifier (CSS), filename_to_upload | fazer upload do arquivo para o elemento da web |
download() | download_url , filename_to_save (opcional) | baixar do URL para o arquivo |
unzip() | file_to_unzip , unzip_location (opcional) | descompacte o arquivo zip no local especificado |
frame() | main_frame id or name , sub_frame (opcional) | definir web frame, frame() para redefinir |
popup() | string_in_url (nenhum parâmetro para redefinir para a página principal, especialmente importante quando usado para controlar outra guia do navegador) | definir o contexto para a guia pop-up da web |
run() | command_to_run (use ; entre comandos) | execute o comando do sistema operacional e retorne a saída |
dom() | statement_to_run (código JS para executar no navegador) | execute o código no DOM e retorne a saída |
vision() | command_to_run (código Python para SikuliX) | execute comandos SikuliX personalizados |
timeout() | timeout_in_seconds (em branco retorna o tempo limite atual) | alterar o tempo limite de espera (padrão 10s) |
modificadores de teclado() e teclas especiais -
[shift] [ctrl] [alt] [win] [cmd] [clear] [space] [enter] [backspace] [tab] [esc] [up] [down] [esquerda] [direita] [pageup] [pagedown ] [excluir] [home] [fim] [inserir] [f1] .. [f15] [printscreen] [scrolllock] [pausa] [capslock] [numlock]
Função | Parâmetros | Propósito |
---|---|---|
exist() | element_identifier | Verdadeiro ou Falso se o elemento for exibido antes do tempo limite |
present() | element_identifier | retorne True ou False se o elemento estiver presente agora |
count() | element_identifier | retornar o número de elementos da web como número inteiro |
clipboard() | text_to_put ou nenhum parâmetro | coloque texto ou retorne o texto da área de transferência como string |
get_text() | source_text , left , right , count=1 | retornar texto entre os marcadores esquerdo e direito |
del_chars() | source_text , characters | retornar texto após excluir determinados caracteres |
mouse_xy() | retornar coordenadas '(x,y)' do mouse como string | |
mouse_x() | retornar coordenada x do mouse como número inteiro | |
mouse_y() | retornar a coordenada y do mouse como inteiro | |
title() | retornar o título da página da web atual como string | |
text() | retornar o conteúdo de texto da página da web atual como string | |
timer() | tempo de retorno decorrido em segundos entre chamadas como float |
para digitar uma grande quantidade de texto rapidamente, use clipboard() e teclado() para colar em vez de type()
TagUI é um software RPA de código aberto líder? com dezenas de milhares de usuários. Foi criado em 2016-2017, quando deixei o DBS Bank como engenheiro de automação de testes, para um período sabático de um ano na Europa Oriental. A maior parte de sua base de código foi escrita em Novi Sad Sérvia. Em 2018, juntei-me à AI Singapore para continuar o desenvolvimento do TagUI.
Durante alguns meses de 2019, assumi o papel de pai em tempo integral, cuidando da minha filha recém-nascida e da minha esposa ??. Entre a babá, usei meu tempo para criar este pacote Python construído em TagUI. Espero que pip install rpa
torne a vida mais fácil para usuários de Python de diferentes estilos de vida.
Eu mantinha o pacote (e uma versão bifurcada do TagUI otimizada para ele) em meu tempo pessoal. Mas agora, Marcelo Cecin, Luis Alejandro, Jozsef Fulop, Tolani Jaiye-Tikolo, Shyan Chua, Laurence Liew, Bala Ranganathan e eu somos a nova equipe que mantém este pacote. Estamos felizes que dezenas de milhares de pessoas o utilizem?
Para informações técnicas, veja sua arquitetura intuitiva abaixo e amplos comentários neste pacote de arquivo único.
Gostaria de dar crédito e expressar meu agradecimento a esses incríveis contribuidores de código aberto abaixo ❤️
RPA para Python é um software de código aberto lançado sob licença Apache 2.0
Mindly
Raramente faço recomendações de produtos, exceto o incrível software OpenRPA e as ferramentas RPA de código aberto nas quais trabalhei pessoalmente. Eu gostaria de recomendar o aplicativo de mapeamento mental Mindly, disponível para telefone e macOS.
Um mapa mental é uma forma intuitiva de armazenar, organizar e recuperar informações, pois imita como a mente funciona – relações entre diferentes conceitos e memórias. É perfeito para fazer uso produtivo de seu tempo em trânsito.
A imagem abaixo está um exemplo da Mindly sobre os benefícios do café. Eu pessoalmente o uso para mapear minha vida pelos próximos 13 anos, refletir como ser um marido melhor, manter uma lista de comidas tradicionais britânicas, armazenar códigos de barras de membros de supermercados, bem como fazer anotações em qualquer lugar. Há até um mapa mental para minha filha de 3 anos brincar, ela simplesmente gosta de arrastar os nós para o lixo. Então criei um mapa mental fictício em modo de espera que ela pode destruir.
O melhor de tudo é que a versão gratuita deve atender às necessidades da maioria dos usuários. Não excedi o limite gratuito de 100 nós por mapa mental, mas comprei-o logo após usá-lo, para apoiar o trabalho da equipe por trás deste aplicativo.
PS - Não conheço a equipe da Mindly, só recomendo o app aqui porque é demais