Automação de Processos - Python

#Python #RPA  #SELENIUM #Automação #PANDAS 

Nesse projeto  fiz a automação de um processo que uso muito no meu dia a dia. Sou professor e uma das minhas atividades é preencher o sistema com as informações das aulas (atividade que o aluno deve estudar, metologia usada na aula, entre outros itens.)

Normalmente dou a mesma aula mais de uma vez na semana, porem para turmas diferentes, e com isso, preciso preencher o sistema para cada uma das turmas (na essência as informações são as mesmas, com alguns ajustes, como feriados). Porém essa atividade demandava muito tempo, pois temos 20 dias letivos, se lecionar a mesma disciplina para 5 turmas diferentes, tenho que preencher 100 vezes o sistema. Como um bom programador, resolvi facilitar a minha vida fazendo um script em Python que fizesse a automação dessa tarefa.

Usando o Selenium, consegui fazer um RPA (Robotic Process Automation). Para isso adotei a seguinte estratégia:

  • Criei um arquivo de texto para o usuário passar as informações de login (user e senha);
  • Um segundo arquivo texto para informar o nome da planilha em xlsx, que estão as informações: Datas, título da aula e texto que sera mostrado aos alunos. Usando o nome do arquivo abro ele com pacote Pandas (pacote muito usado em data science). Alem de informar o nome do arquivo xlsx, nesse mesmo arquivo de texto o usuário informa qual o card será selecionado. (cada card representa uma disciplina no sistema)
  • O Python abre os arquivos e faz a leitura das informações e loga no sistema usando o Selenium;
  •  Usando as funcionalidades do Selenium navego nas páginas, dando clique em botões e links (usando XPATH, ID, NAME, LINK_TEXT, o que estiver disponível), e escrevendo nos campos que precisam ser preenchidos.
  • Um recurso bem legal usado é esperar o elemento ser criado antes de selecionar ele. Na primeira versão fiz algumas partes com o PyAutoGui, e tinha que colocar um tempo fixo para garantir que o elemento estivesse na tela, isso deixa a automação demasiada lenta, pois as vezes o elemento já estava no DOM, mas o delay ainda não tinha acabado. Então, com o recurso wait do WebDriverWait, resolvi esse problema, e ficou bem rápido.
  • No terminal coloquei um status para ir acompanhando quais aulas já foram preenchidas.
  • Clique no botão abaixo e veja como ficou a automação.

Desenvolvido por Saulo Coelho – 2022