Colmeia RPA Entrar
  1. Início
  2. Artigos
  3. RPA com Python

RPA com Python: guia prático, do primeiro robô ao painel de resultados

Como criar robôs de automação em Python: quando vale a pena trocar a ferramenta de RPA pelo código, quais bibliotecas usar, um robô de exemplo pronto para adaptar e o que fazer para ele rodar sozinho, sem falhar em silêncio.

  • Por David Alves
  • Atualizado em
  • 13 min de leitura

Em resumo

  • RPA com Python é criar robôs de software em Python, com bibliotecas gratuitas como Playwright, Selenium, pywinauto e pandas, em vez de usar uma ferramenta de RPA com licença.
  • Python é a escolha natural quando a equipe programa: não há licença por robô, o código fica versionado e testável, e a mesma linguagem cobre web, desktop, planilhas, PDFs e IA.
  • Um robô em produção precisa de mais que o caminho feliz: tentativas automáticas, logs, captura de tela no erro e controle dos itens já processados.
  • Robôs em Python costumam ser agendados pelo Agendador de Tarefas do Windows, pelo cron ou por um orquestrador, e precisam de monitoramento para que as falhas e a economia apareçam.
Ilustração de uma oficina à noite: uma cobra azul e amarela entrega blocos de código a um robô sendo montado na bancada, enquanto outro robô pronto caminha por favos de mel até um painel com gráficos de barras e sinais de concluído
Com Python, o robô sai da bancada e vai direto para o painel de resultados. Ilustração gerada com IA.

O que é RPA com Python e quando vale a pena

RPA com Python é construir robôs de automação de processos escrevendo código em Python, em vez de montar fluxos numa ferramenta de RPA como UiPath ou Power Automate. O robô faz o mesmo trabalho: entra nos sistemas, preenche formulários, baixa relatórios, lê planilhas e PDFs e lança dados no ERP. A diferença é que cada passo é uma linha de código, usando bibliotecas gratuitas.

O Python virou a linguagem de automação por ser simples de ler e ter biblioteca para quase tudo. É também uma das linguagens mais usadas do mundo: na pesquisa da Stack Overflow de 2025, 57,9% dos desenvolvedores disseram ter usado Python, alta de 7 pontos percentuais sobre 2024, e ele lidera o índice TIOBE de outubro de 2026, com 19,23%. Na prática, isso significa mais gente que sabe manter o robô e mais respostas prontas quando algo dá errado.

Vale a pena quando a equipe já programa, quando os robôs precisam de lógica que não cabe bem num fluxo visual (validações, cálculos, chamadas de API, IA) ou quando o custo de licença por robô pesa. Se você ainda está entendendo o que é RPA e que processos automatizar, comece pelo guia de RPA na automação de processos.

Python ou ferramenta de RPA (UiPath, Power Automate)?

Não existe resposta única: depende de quem vai construir e manter os robôs. A tabela resume as diferenças que mais pesam na escolha:

CritérioPythonUiPath / Power Automate
Licença Linguagem e bibliotecas gratuitas Licença por robô ou por usuário; o Power Automate para desktop é gratuito no Windows 10/11, mas robôs autônomos exigem plano pago
Quem constrói Desenvolvedores Analistas e desenvolvedores, com fluxos visuais (low-code)
Manutenção Código em Git, revisão e testes automatizados como em qualquer software Projetos da própria ferramenta; versionar e testar é possível, mas menos natural
Agendamento e painel Você monta (Agendador do Windows, cron) ou usa um orquestrador Orquestrador da própria ferramenta
Dados, APIs e IA Ponto forte: pandas, requisições HTTP e bibliotecas de IA na mesma linguagem Possível, geralmente chamando scripts ou conectores

As duas coisas também se misturam. A UiPath tem um pacote oficial de atividades Python (Python Scope, Run Python Script, Invoke Python Method), compatível com versões até o Python 3.13. Já o Power Automate para desktop tem a ação "Executar script Python", mas ela só oferece o Python 2.7 ou o 3.4 (o padrão é o 2.7), versões que não recebem mais atualizações. Por isso, quando o fluxo do Power Automate precisa de Python moderno, o melhor caminho é chamar um script externo, com o Python instalado na máquina.

Bibliotecas Python para RPA

Cada biblioteca resolve um tipo de tarefa. Um robô real costuma combinar duas ou três: uma para operar o sistema e outras para tratar os dados.

Ilustração de um robô abrindo uma caixa de ferramentas com uma janela de navegador, um mouse, uma planilha, um PDF, uma chave e uma janela de sistema, observado por uma cobra azul e amarela e uma abelha
Cada biblioteca Python é uma ferramenta para um tipo de tarefa: navegador, tela, planilha, PDF. Ilustração gerada com IA.
BibliotecaPara que serveQuando usar
PlaywrightControla o navegador (Chromium, Firefox e WebKit) e espera cada elemento ficar pronto antes de agirPortais e sistemas web, principalmente os novos
SeleniumControla o navegador pelo WebDriver, padrão do W3CProjetos que já usam Selenium e execução em máquinas remotas
pywinautoLê e opera os controles de janelas do Windows (botões, campos, menus)ERPs e sistemas desktop no Windows
PyAutoGUIMove o mouse e digita por coordenadas ou por imagem na telaÚltimo recurso, quando o sistema não expõe nada além da tela
BotCityFramework de RPA com visão computacional para desktop, web e terminal, com orquestrador próprioTimes que querem um framework e um orquestrador pensados para Python
pandas e openpyxlLeem, tratam e geram planilhas Excel e arquivos CSVQuase todo robô que mexe com relatórios
pdfplumberExtrai texto e tabelas de PDFsNotas, boletos e extratos em PDF com texto (PDF escaneado precisa de OCR)
pywin32Controla programas Windows por COM: SAP GUI (com scripting habilitado), Excel, OutlookAutomação de SAP GUI e do Office

Para sistemas web, prefira o Playwright. Segundo a documentação, ele espera automaticamente que o elemento esteja visível, estável e habilitado antes de clicar ou digitar, o que elimina a maior parte dos sleep espalhados pelo código e dos erros intermitentes. O Selenium continua uma boa escolha e controla o navegador como um usuário faria, na máquina local ou numa máquina remota.

O PyAutoGUI é o mais fácil de começar e o mais frágil em produção: qualquer mudança de resolução, janela fora do lugar ou pop-up inesperado faz o clique cair no lugar errado. Ele tem uma trava de segurança útil enquanto você desenvolve: segundo a documentação, levar o mouse a um dos cantos da tela interrompe o robô com uma exceção. A BotCity publica seu framework de automação como código aberto (licença Apache 2.0) e oferece um orquestrador para agendar e acompanhar os robôs.

Como criar um robô RPA com Python, passo a passo

O exemplo abaixo resolve uma tarefa comum: entrar num portal, exportar o relatório do dia, filtrar os itens pendentes e gerar uma planilha para o time. Troque o endereço e os nomes dos campos pelos do seu sistema.

  1. Crie um ambiente isolado para o robô e instale as bibliotecas:
python -m venv .venv
.venv\Scripts\activate          # no Linux: source .venv/bin/activate
pip install playwright pandas openpyxl
playwright install chromium
  1. Guarde usuário e senha fora do código, em variáveis de ambiente ou num cofre de senhas. Nunca no arquivo do robô, que vai para o Git.
  2. Escreva o robô em funções pequenas, uma para cada etapa:
import os
from pathlib import Path

import pandas as pd
from playwright.sync_api import sync_playwright

PASTA = Path("relatorios")
PASTA.mkdir(exist_ok=True)


def baixar_relatorio() -> Path:
    with sync_playwright() as p:
        navegador = p.chromium.launch(headless=True)
        pagina = navegador.new_page()
        pagina.goto("https://portal.suaempresa.com.br/login")
        pagina.get_by_label("Usuário").fill(os.environ["PORTAL_USUARIO"])
        pagina.get_by_label("Senha").fill(os.environ["PORTAL_SENHA"])
        pagina.get_by_role("button", name="Entrar").click()
        pagina.get_by_role("link", name="Relatórios").click()
        with pagina.expect_download() as espera:
            pagina.get_by_role("button", name="Exportar CSV").click()
        arquivo = PASTA / espera.value.suggested_filename
        espera.value.save_as(arquivo)
        navegador.close()
    return arquivo


def gerar_planilha(arquivo: Path) -> int:
    dados = pd.read_csv(arquivo, sep=";", decimal=",")
    pendentes = dados[dados["status"] == "PENDENTE"]
    pendentes.to_excel(arquivo.with_suffix(".xlsx"), index=False)
    return len(pendentes)


if __name__ == "__main__":
    print(gerar_planilha(baixar_relatorio()), "itens pendentes")
  1. Rode com o navegador visível (headless=False) enquanto desenvolve, para ver cada passo. Em produção, volte para headless=True.
  2. Teste com os casos ruins: senha errada, relatório vazio, portal fora do ar. É aqui que a próxima seção entra.

Repare que o robô procura os elementos pelo que a pessoa vê na tela ("Usuário", "Entrar", "Exportar CSV"), e não por posições ou caminhos longos no HTML. Isso deixa o robô bem mais resistente às mudanças de layout do portal.

Tratamento de erros, logs e novas tentativas

Um robô que só funciona no caminho feliz vai parar na primeira instabilidade do portal. Em produção, todo robô precisa de quatro coisas:

Ilustração de um robô que caiu da esteira de documentos e foi segurado por uma rede dourada, enquanto outro robô fotografa a cena, uma abelha faz anotações e uma seta indica que ele volta ao início da esteira
Tratamento de erros é a rede de segurança do robô: registra o que aconteceu e tenta de novo. Ilustração gerada com IA.
  • Novas tentativas para falhas passageiras, como uma página que demorou ou uma conexão que caiu;
  • Log em arquivo, com data e hora de cada etapa e o erro completo;
  • Captura da tela no erro, para ver o que o robô estava vendo quando falhou;
  • Controle dos itens já processados, para que uma nova tentativa não lance a mesma nota duas vezes.

Uma função simples resolve as tentativas e o log:

import logging
import time

logging.basicConfig(
    filename="robo.log",
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s",
)
log = logging.getLogger("robo_relatorio")


def com_tentativas(etapa, tentativas=3, espera=60):
    for n in range(1, tentativas + 1):
        try:
            return etapa()
        except Exception:
            log.exception("Tentativa %d de %d falhou", n, tentativas)
            if n == tentativas:
                raise
            time.sleep(espera)

Para a captura de tela, envolva os passos do navegador num try e chame pagina.screenshot(path="erros/erro.png", full_page=True) no except, antes de relançar a exceção. Para os itens processados, guarde a chave de cada um (número da nota, do pedido) numa tabela ou planilha, e confira antes de lançar.

Não esconda a falha com um except: pass. O robô parece estar funcionando, o trabalho não é feito e ninguém fica sabendo. Registre o erro e deixe a exceção subir no fim, para que o agendador e o monitoramento vejam a falha.

Como agendar e orquestrar robôs em Python

Um robô só economiza tempo quando roda sozinho. Existem três caminhos, do mais simples ao mais completo:

  1. Agendador de Tarefas do Windows. Cria uma tarefa que chama o Python do ambiente do robô, por exemplo de segunda a sexta às 7h:
    schtasks /create /tn "Robo Relatorio" /sc weekly /d MON,TUE,WED,THU,FRI /st 07:00 ^
      /tr "C:\robos\relatorio\.venv\Scripts\python.exe C:\robos\relatorio\robo.py"
    Robôs que usam a tela (PyAutoGUI, pywinauto) precisam de uma sessão do Windows aberta, então configure a tarefa para rodar com o usuário conectado.
  2. cron, no Linux. Bom para robôs web sem tela (headless). A linha abaixo, no crontab -e, roda o robô de segunda a sexta às 7h:
    0 7 * * 1-5 /opt/robos/relatorio/.venv/bin/python /opt/robos/relatorio/robo.py
  3. Orquestrador. Quando os robôs passam de alguns poucos, vale um orquestrador para agendar, distribuir as execuções entre as máquinas, guardar credenciais e reexecutar o que falhou. Para Python, há opções como o orquestrador da BotCity e o Control Room da Robocorp.

Como monitorar os robôs e mostrar o resultado

Agendado, o robô some de vista. É aí que mora o risco: um robô que parou na sexta à noite só é notado na segunda, quando o trabalho já acumulou. E, mesmo funcionando, ele não conta para ninguém quanto tempo está economizando. Quem mantém robôs em Python costuma descobrir as falhas pelo usuário reclamando e calcular a economia numa planilha, uma vez por ano.

A Colmeia RPA resolve as duas coisas com duas linhas no robô. O SDK em Python avisa o painel quando o robô começa e quando termina, com sucesso ou com o erro:

from painel_robos import execucao

with execucao("rpa_relatorio_pendentes") as ex:
    arquivo = com_tentativas(baixar_relatorio)
    ex.quantidade = gerar_planilha(arquivo)

Se o bloco terminar normalmente, o robô aparece com sucesso; se der exceção, aparece com o erro e a mensagem, na hora. O SDK nunca derruba nem trava o robô: se o painel estiver fora do ar, o robô segue normalmente. Cada robô vira um personagem num escritório virtual ao vivo, e o painel soma as horas e os reais economizados por robô, por setor e no total, pronto para a TV da área ou para a reunião com a diretoria.

Resultados da automação no painel da Colmeia RPA, atualizados a cada execução. Valores da empresa de demonstração.

Antes de ter os números reais, estime o retorno na calculadora de ROI de RPA, com o tempo manual, o volume e o custo da hora de cada processo.

Fontes

  1. Stack Overflow. 2025 Developer Survey: Technology. 2025.
  2. TIOBE. TIOBE Index, outubro de 2026.
  3. Microsoft. Scripting actions reference (Power Automate for desktop). Microsoft Learn, atualizado em 28 out. 2026.
  4. Microsoft. Power Automate disponível no Windows sem custo adicional. Microsoft Learn.
  5. UiPath. Python Activities. UiPath Docs, 2026.
  6. Playwright. Auto-waiting e Installation. Documentação do Playwright para Python.
  7. Selenium. WebDriver. Documentação do Selenium.
  8. PyAutoGUI. PyAutoGUI documentation (Fail-Safes).
  9. BotCity. BotCity Framework - Python (GitHub, licença Apache 2.0) e site da BotCity.
Compartilhe:

Perguntas frequentes

Dá para fazer RPA com Python de graça?

Sim. O Python e as principais bibliotecas de automação (Playwright, Selenium, PyAutoGUI, pywinauto, pandas) são gratuitos e de código aberto. O custo fica no tempo de desenvolvimento, na máquina que roda os robôs e, se a empresa quiser, num orquestrador pago.

Python substitui o UiPath ou o Power Automate?

Depende do time. Com desenvolvedores, o Python faz o mesmo trabalho sem licença por robô e com mais liberdade. Sem programadores, ferramentas low-code como UiPath e Power Automate costumam ser mais rápidas de adotar. Muitas empresas usam as duas: a UiPath, por exemplo, tem atividades oficiais para rodar scripts Python.

Qual a melhor biblioteca Python para RPA?

Depende do sistema: Playwright ou Selenium para sistemas web, pywinauto para aplicações Windows, pandas e openpyxl para planilhas e pdfplumber para PDFs. O PyAutoGUI, que clica por posição ou imagem na tela, deve ficar como último recurso, porque quebra com facilidade.

Precisa saber programar para fazer RPA com Python?

Sim, o básico de Python: variáveis, funções, tratamento de exceções e instalação de pacotes. Não é preciso ser especialista: um primeiro robô simples cabe em poucas dezenas de linhas.

Dá para automatizar o SAP com Python?

Sim. Com o SAP GUI Scripting habilitado no servidor e no computador, o Python controla o SAP GUI pela biblioteca pywin32 (win32com), do mesmo jeito que um script gravado pelo próprio SAP. Sem o scripting, a alternativa é automatizar pela tela, o que é mais frágil.

Veja seus robôs Python trabalhando, ao vivo

Mostramos a Colmeia RPA funcionando e ajudamos a ligar os primeiros robôs da sua empresa ao painel, com o SDK em Python.

Agendar uma demonstração