Introdução
Neste post quero compartilhar uma experiência recente de automação usando Python, Selenium e a criação de uma interface gráfica com Tkinter. O objetivo era automatizar completamente a geração de Anotações de Responsabilidade Técnica (ARTs) no sistema online do CREA, de forma simples e amigável, através de uma interface gráfica intuitiva.
A Ideia Inicial
Tudo começou quando percebi que preencher ARTs manualmente consumia tempo significativo, especialmente quando o processo era repetitivo e frequente em nosso escritório de engenharia. Para otimizar o trabalho, pensei em automatizar a interação com o sistema web, permitindo que os dados fossem preenchidos automaticamente. Inicialmente, usei o Selenium para simular a interação do usuário com o navegador Brave, já que até onde sei sistema em questão não fornece API pública.
Evoluindo para uma Interface Gráfica
Após escrever o script básico em Python, notei que os dados estavam hardcoded, ou seja, fixos diretamente no código. Isso não era ideal, pois impedia outros usuários não técnicos de utilizar a automação facilmente. Assim, decidi criar uma interface gráfica simples e prática com Tkinter, permitindo que qualquer pessoa pudesse inserir os dados necessários sem precisar editar o código.
Campos e Controles na Interface
A interface gráfica incluiu campos para inserir CPF, nome, endereço, datas e informações técnicas específicas da ART, além de checkboxes para selecionar facilmente as disciplinas envolvidas (como Concreto, Hidrossanitário e Elétrico) e radiobuttons para selecionar o profissional responsável pela ART.
Para isso, utilizei o grid do Tkinter para organizar os elementos de forma limpa e visualmente agradável. Encontrei alguns desafios com o alinhamento inicial dos checkboxes e radiobuttons, especialmente na questão de espaçamento irregular. Resolvi esse problema criando frames internos dentro da janela principal, facilitando o agrupamento e o alinhamento correto dos elementos.
Selenium: Controlando o Navegador
Outro detalhe importante foi a utilização da biblioteca Selenium. Ela permite automações robustas, mas exige bastante atenção aos elementos HTML da página que está sendo automatizada. Precisei usar métodos como WebDriverWait e ExpectedConditions para garantir que cada elemento estivesse carregado antes de tentar interagir com ele, garantindo uma execução estável.
O script também precisou de algumas lógicas condicionais, especialmente nas atividades que eram selecionadas pelas checkboxes. Aqui foi necessário transformar o estado das checkboxes (selecionadas ou não) em valores booleanos para controlar o fluxo do script.
Gerando o Executável com PyInstaller
Após o script funcional e a interface gráfica estarem integrados, pensei na distribuição dessa ferramenta internamente, o que me levou a criar um executável (.exe) usando o PyInstaller. Esse processo trouxe novos desafios, especialmente ao lidar com o console que desaparecia em modo windowed. Resolvi esse detalhe implementando uma pequena janela de popup ao final do script, solicitando que o usuário clicasse para fechar o navegador após conferir os dados preenchidos automaticamente.
Organização dos Arquivos Gerados
A geração do executável também gerou arquivos auxiliares, deixando as pastas um pouco desorganizadas. Para resolver isso, configurei o PyInstaller para gerar o executável diretamente em uma pasta específica e criei scripts auxiliares para limpar os arquivos temporários automaticamente após a criação do executável.
Considerações Finais
Esse projeto trouxe grande aprendizado técnico e também reforçou a importância da usabilidade, tornando uma automação complexa algo acessível para qualquer usuário sem conhecimentos avançados em programação. Fica a dica para outros engenheiros e profissionais que desejam economizar tempo com tarefas repetitivas: investir em automação pode trazer ganhos significativos de produtividade.
Espero que esse relato inspire você também a buscar soluções criativas para automatizar e otimizar seu trabalho diário. A automação é mais simples do que parece e os resultados são extremamente gratificantes!