Automação Web com Python é uma ferramenta bastante importante para facilitar e escalar a execução de tarefas que sejam repetitivas e acelerar processos manuais. Neste artigo, vamos entender mais sobre o que é, como funciona e como desenvolver esse tipo de projeto utilizando Python e Selenium, com exemplos e explicação sobre as vantagens dessas tecnologias.
Automação Web
Automação Web trata-se de um projeto para automatizar tarefas e interações em ambientes que estejam na Web, permitindo que processos sejam executados de algumas formas:
- No code: com ferramentas que permitam o desenvolvimento de uma automação sem o uso de linguagem de programação ou frameworks, já com fluxos pré-criados;
- Low code: com ferramentas que permitam algum uso de código em determinadas situações, mas que também possuem fluxos e processos pré-estabelecidos;
- Code based: pela qual desenvolvemos utilizando linguagens de programação, frameworks e outras bibliotecas de apoio, trazendo mais liberdade e flexibilidade para atender aos requisitos de uma automação, além de maior controle do que está sendo feito.
O que é Selenium?
Selenium é um framework de código aberto que, inicialmente, era muito conhecido entre a comunidade de pessoas que atuam com testes e qualidade de software por ser um grande apoio no desenvolvimento de testes automatizados em navegadores.
Entretanto, sua aplicabilidade foi se tornando ainda mais robusta e adaptável, fazendo com que hoje também seja utilizado para diversos outros tipos de automação, como Web e RPA (Robotic Process Automation, ou seja, automação de processos robóticos).
Automação com Python e Selenium
Automação com Python e Selenium é possível porque o Selenium tem suporte para o Python, uma linguagem de programação que está sendo cada vez mais utilizada por pessoas desenvolvedoras para automatizar tarefas manuais e repetitivas, segundo a pesquisa sobre as tendências do RPA na América Latina em 2023 realizada por BotCity e EY.
Utilizando os comandos da biblioteca Selenium Webdriver, que tem recomendação da W3C, é possível simular diversas ações que pessoas usuárias fariam para realizar determinada tarefa. E mesmo funções que não estejam disponíveis, por ter integração com a linguagem Python, fica fácil importar outras bibliotecas dessa linguagem para acelerar o processo de desenvolvimento, aproveitando funcionalidades já consolidadas pela comunidade.
💡 Saiba mais: Bibliotecas Python: lista atualizada [2024]
O que é e como funciona o Selenium WebDriver?
O Selenium dá suporte a maioria dos navegadores com o apoio do Selenium WebDriver, o qual executa um navegador como se fosse uma pessoa usuária, seja localmente ou em uma máquina virtual usando o servidor do Selenium. Foi projetado para ser como uma interface de programação simples e mais concisa. Também é uma API orientada a objetos e ajuda a conduzir o navegador de forma mais eficaz durante a execução dos processos.
💡 Saiba mais: Documentação Selenium WebDriver.
Vantagens de desenvolver automação com Python e Selenium
O Python é uma linguagem de programação conhecida por sua simplicidade e pelo seu poder. É também bastante versátil, o que a torna a escolha ideal para o desenvolvimento de automação Web, enquanto a integração com o Selenium pode facilitar bastante o processo de automação de tarefas complexas.
Tanto o Python quanto o Selenium possuem suporte multiplataforma e essa compatibilidade significa que os códigos desenvolvidos podem ser executados e interpretados por diferentes sistemas operacionais.
A comunidade ativa de ambas as tecnologias torna-se um grande apoio durante o desenvolvimento e, por ser open source, permite que a contribuição constante para melhorias possam ser aplicadas quando fazem sentido. Além de diversos materiais disponíveis para aprender sobre as tecnologias, como esse guia com dicas de como começar a programar em Python.
E não podemos deixar de citar a integração com diversos outros frameworks que podem se tornar bastante úteis durante o processo de desenvolvimento e também a compatibilidade com diversos navegadores bastante utilizados no dia-a-dia, como Edge, Safari, Chrome e Firefox, permitindo uma experiência consistente de automação em diferentes ambientes de navegação.
Exemplo de automação com Python e Selenium
Agora, vamos ao passo a passo para criar uma automação com Python e Selenium, desde o preparo do ambiente até o desenvolvimento da automação em si. Neste exemplo, vamos criar uma automação para consultar o CEP no site oficial dos Correios.
Preparar o ambiente
Para instalar o Selenium, você precisa executar o seguinte comando no seu terminal:
pip install selenium
Essa instalação pode ser feita pelo terminal em seu computador ou no terminal da sua IDE favorita para desenvolvimento Python, como exemplos temos o Visual Studio Code e o PyCharm.
E no seu código, você deverá adicionar a seguinte biblioteca:
from selenium import webdriver
Configuração do Selenium WebDriver
Neste exemplo, vamos utilizar o WebDriver para Firefox, o Geckodriver, mas como mencionado anteriormente, há compatibilidade com outros navegadores, basta você pesquisar por “webdriver + nome do seu navegador” que será fácil encontrá-lo.
Para utilizar o WebDriver em seu código, você poderá fazer de duas maneiras:
- Baixar o WebDriver do navegador que deseja utilizar na sua automação.
Faça o download do webdriver de acordo com o navegador que vai ser utilizado. Lembre-se de baixar o webdriver correspondente ao sistema operacional onde a automação será executada. Em seguida, adicione o webdriver na pasta que você fará referência dentro do código conforme a linha a seguir:
driver = webdriver.Firefox(executable_path = “caminho_do_webdriver”)
- Instalar durante a execução do código
Você poderá fazer conforme o código abaixo:
# adiciona a importação do GeckoDriverManager from webdriver_manager.firefox import GeckoDriverManager def main( ): … # instancia o WebDriver driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) …
Desenvolvimento de automação Web para buscar CEP
Até o momento, criamos um arquivo chamado `bot.py` e nosso código estará assim:
from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager def main(): # instancia o WebDriver driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) if __name__ == '__main__': main()
Já o nosso arquivo `requirements.txt` estará assim:
selenium==3.141.0 webdriver-manager==4.0.0
O objetivo dessa nossa automação de exemplo, será consultar CEP no site oficial dos Correios. Para isso, podemos criar uma constante temporária com o link do site e solicitar ao selenium para abrir o link. Em seguida, vamos testar se está funcionando.
from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager SITE_CORREIOS = "https://buscacepinter.correios.com.br/app/endereco/index.php" def main(): # instancia o WebDriver driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) # acessa página de consulta do CEP driver.get(SITE_CORREIOS) if __name__ == '__main__': main()
Ao executar o código acima, já devemos obter algum resultado que neste caso é o bot abrir o site dos correios:

Podemos agora começar a manipular os elementos da DOM (Document Object Model que significa Modelo de Documento do Objeto – a estrutura da página HTML do site que vamos automatizar) com apoio do framework Selenium.
Se fossemos realizar a tarefa manualmente, teríamos que clicar no campo para inserir o CEP digitando pelo teclado e, em seguida, clicar no botão “Buscar”. Mas quem fará isso, será o robô. Então precisamos achar meios de identificar o campo e o botão.
Como mencionado anteriormente, utilizaremos a DOM. E para chegar até ela, vamos clicar com o botão direito do mouse em cima do campo que desejamos identificar e escolher a opção “Inspecionar” do menu.

Após isso, vamos ter acesso às configurações do navegador e ao código HTML da página dos Correios. Para acessar o campo de entrada de dados para o CEP ou endereço, vamos utilizar o ID, conforme destacado na imagem abaixo. O código HTML mostra que há um id chamado “endereco” para identificar o elemento. Como esse id é único, conforme especificações do próprio HTML, vamos utilizá-lo para acessar via robô.

Para isso, vamos adicionar no código o seguinte comando:
# identifica o elemento input_cep = driver.find_element_by_id("endereco") # insere o valor do CEP no campo endereço input_cep.send_keys(CEP)
Antes da função main, adicionamos também uma constante temporária para testar a inserção do CEP:
CEP = "71691-181"
Da mesma forma que fizemos para identificar o elemento do campo do endereço, faremos com o botão “Buscar”. Clicamos no botão com o botão direito do mouse e escolhemos a opção inspecionar. Em seguida, deve aparecer o item identificado no código HTML da página.

Neste caso, identificamos que também há um id para o botão “buscar” chamado “btn_pesquisar”, então vamos utilizá-lo. Para identificar o botão e o robô clicar nele, vamos adicionar o seguinte código:
# identifica o elemento e clica no botão btn_buscar = driver.find_element_by_id("btn_pesquisar") btn_buscar.click()
Hora de testar nosso código para validar se está tudo funcionando até aqui. É esperado que ao final da execução do robô, a tela da consulta fique aberta mostrando os endereços do CEP inserido na pesquisa.

É muito comum ser necessário coletar os dados da página de uma consulta feita para dar andamento à automação. Neste nosso exemplo, vamos coletar o endereço e salvar em uma variável para podermos interpretar os dados. Com o Selenium podemos fazer da seguinte forma:
# coleta resultados da página tabela_resultados = driver.find_element_by_id("resultado-DNEC") print(tabela_resultados)
Mas ao executar o código e tentar acessar os dados, eles não estarão legíveis. Provavelmente, no seu terminal, terá algo parecido com isso como resposta ao print:
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="63ec31a9-1322-41d5-8381-4f8703b6f7ce", element="7acfa790-367e-4014-b85d-476e672d838e")>
Vamos resolver isso no próximo tópico.
Como integrar com framework Python da BotCity para automação RPA
É comum não termos todas as funcionalidades desejadas em um determinado framework. E podemos aproveitar a integração entre eles na linguagem de programação Python para poder aproveitar melhor cada parte.
Para resolvermos o problema de interpretar os dados, vamos usar uma função chamada “table_to_dict” do framework Open Source da BotCity. Para isso, vamos adicionar o import conforme abaixo:
from botcity.web.parsers import table_to_dict
E no código adicionaremos a seguinte função:
# converte os dados para um dicionário do Python tabela_resultados = table_to_dict(table=tabela_resultados)[0]
Ao executar novamente o código, provavelmente você terá um resultado parecido com o abaixo:
{'logradouronome': 'Avenida Brasil', 'bairrodistrito': 'Bora Manso', 'localidadeuf': 'Brasília/DF', 'cep': '71691-181'}
Agora, neste formato, ficará mais fácil acessar os campos e os dados para a sua automação. E não se esqueça de adicionar ao final do seu código a função a seguir, pois é uma boa prática sempre finalizar o navegador ao final da execução da sua automação RPA.
driver.quit()
Você também pode explorar mais funcionalidades do framework web da BotCity através da documentação, há diversas funções que podem te ajudar a aprimorar os seus robôs.
Para entender como ficou o código final, acompanhe abaixo:
from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager from botcity.web.parsers import table_to_dict SITE_CORREIOS = "https://buscacepinter.correios.com.br/app/endereco/index.php" CEP = "71691-181" def main(): # instancia o WebDriver driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) # acessa página de consulta do CEP driver.get(SITE_CORREIOS) # identifica o elemento input_cep = driver.find_element_by_id("endereco") # insere o valor do CEP no campo endereço input_cep.send_keys(CEP) # identifica o elemento e clica no botão btn_buscar = driver.find_element_by_id("btn_pesquisar") btn_buscar.click() # coleta resultados da página tabela_resultados = driver.find_element_by_id("resultado-DNEC") # converte os dados para um dicionário do Python tabela_resultados = table_to_dict(table=tabela_resultados)[0] print(tabela_resultados) driver.quit() if __name__ == '__main__': main()
Praticando automação web com Python
Este foi apenas um exemplo para que você possa entender melhor como funciona o Selenium com o Python para o desenvolvimento de automações Web. Há diversas melhorias que podem ser feitas. Então que tal praticar?
Você pode mudar a forma de inserir dados ao invés de deixá-los fixos no código, como o link do site dos Correios e o CEP que deseja consultar. Há formas mais dinâmicas de fazer isso, por exemplo via parâmetros ou ainda por planilhas.
Falando em aprimorar seu código, o próximo passo ideal é você aprender também como gerenciar a sua automação. E uma excelente forma de fazer isso seria pelo BotCity Orquestrador. Entenda melhor o passo a passo de como orquestrar sua automação Selenium pelo artigo “Orquestrando e gerenciando sua automação Selenium em Python RPA”.
Tudo certo para explorar mais sobre automação Web?
Para ir mais a fundo neste assunto, te convidamos a participar da nossa comunidade global de RPA, é só entrar no nosso Slack ou ainda entrar em contato pelo nosso fórum. Qualquer dúvida, só chamar a gente! E não esqueça de criar a sua conta gratuita para testar as funcionalidades que estamos explorando em nossos conteúdos.