{"id":7669,"date":"2024-02-12T19:10:58","date_gmt":"2024-02-12T22:10:58","guid":{"rendered":"https:\/\/blog.botcity.dev\/?p=7669"},"modified":"2025-09-11T15:06:19","modified_gmt":"2025-09-11T18:06:19","slug":"automacao-web-python","status":"publish","type":"post","link":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/","title":{"rendered":"Automa\u00e7\u00e3o Web com Python e Selenium: como fazer?"},"content":{"rendered":"<p><b>Automa\u00e7\u00e3o Web com Python<\/b><span style=\"font-weight: 400;\"> \u00e9 uma ferramenta bastante importante para facilitar e escalar a execu\u00e7\u00e3o de tarefas que sejam repetitivas e acelerar processos manuais. Neste artigo, vamos entender mais sobre o que \u00e9, como funciona e como desenvolver esse tipo de projeto utilizando Python e Selenium, com exemplos e explica\u00e7\u00e3o sobre as vantagens dessas tecnologias.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Automa\u00e7\u00e3o Web<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Automa\u00e7\u00e3o Web trata-se de um projeto para automatizar tarefas e intera\u00e7\u00f5es em ambientes que estejam na Web, permitindo que processos sejam executados de algumas formas:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>No code: <\/b><span style=\"font-weight: 400;\">com ferramentas que permitam o desenvolvimento de uma automa\u00e7\u00e3o sem o uso de linguagem de programa\u00e7\u00e3o ou frameworks, j\u00e1 com fluxos pr\u00e9-criados;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/11\/22\/plataforma-desenvolvimento-low-code\/\"><b>Low code<\/b><\/a><b>:<\/b><span style=\"font-weight: 400;\"> com ferramentas que permitam algum uso de c\u00f3digo em determinadas situa\u00e7\u00f5es, mas que tamb\u00e9m possuem fluxos e processos pr\u00e9-estabelecidos;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Code based:<\/b><span style=\"font-weight: 400;\"> pela qual desenvolvemos utilizando linguagens de programa\u00e7\u00e3o, frameworks e outras bibliotecas de apoio, trazendo mais liberdade e flexibilidade para atender aos requisitos de uma automa\u00e7\u00e3o, al\u00e9m de maior controle do que est\u00e1 sendo feito.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">O que \u00e9 Selenium?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Selenium \u00e9 um framework de c\u00f3digo 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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Entretanto, sua aplicabilidade foi se tornando ainda mais robusta e adapt\u00e1vel, fazendo com que hoje tamb\u00e9m seja utilizado para diversos outros tipos de automa\u00e7\u00e3o, como Web e RPA (Robotic Process Automation, ou seja, automa\u00e7\u00e3o de processos rob\u00f3ticos).<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Automa\u00e7\u00e3o com Python e Selenium<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Automa\u00e7\u00e3o com Python e Selenium \u00e9 poss\u00edvel porque o Selenium tem suporte para o Python, uma linguagem de programa\u00e7\u00e3o que est\u00e1 sendo cada vez mais utilizada por pessoas desenvolvedoras para automatizar tarefas manuais e repetitivas, segundo a <\/span><a href=\"https:\/\/automation.botcity.dev\/pt-br\/report-rpa-america-latina-tendencias-2023\"><span style=\"font-weight: 400;\">pesquisa sobre as tend\u00eancias do RPA na Am\u00e9rica Latina em 2023<\/span><\/a><span style=\"font-weight: 400;\"> realizada por <\/span><a href=\"https:\/\/www.botcity.dev\/\"><span style=\"font-weight: 400;\">BotCity<\/span><\/a><span style=\"font-weight: 400;\"> e EY.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Utilizando os comandos da biblioteca Selenium Webdriver, que tem <\/span><a href=\"https:\/\/www.w3.org\/TR\/webdriver1\/\"><span style=\"font-weight: 400;\">recomenda\u00e7\u00e3o da W3C<\/span><\/a><span style=\"font-weight: 400;\">, \u00e9 poss\u00edvel simular diversas a\u00e7\u00f5es que pessoas usu\u00e1rias fariam para realizar determinada tarefa. E mesmo fun\u00e7\u00f5es que n\u00e3o estejam dispon\u00edveis, por ter integra\u00e7\u00e3o com a linguagem Python, fica f\u00e1cil importar outras bibliotecas dessa linguagem para acelerar o processo de desenvolvimento, aproveitando funcionalidades j\u00e1 consolidadas pela comunidade.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ud83d\udca1<\/span> <b>Saiba mais<\/b><span style=\"font-weight: 400;\">: <\/span><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/01\/15\/bibliotecas-python\/\"><span style=\"font-weight: 400;\">Bibliotecas Python<\/span><\/a><span style=\"font-weight: 400;\">: lista atualizada [2024]<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">O que \u00e9 e como funciona o Selenium WebDriver?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O Selenium d\u00e1 suporte a maioria dos navegadores com o apoio do Selenium WebDriver, o qual executa um navegador como se fosse uma pessoa usu\u00e1ria, seja localmente ou em uma <\/span><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/11\/27\/maquina-virtual\/\"><span style=\"font-weight: 400;\">m\u00e1quina virtual<\/span><\/a><span style=\"font-weight: 400;\"> usando o servidor do Selenium. Foi projetado para ser como uma interface de programa\u00e7\u00e3o simples e mais concisa. Tamb\u00e9m \u00e9 uma API orientada a objetos e ajuda a conduzir o navegador de forma mais eficaz durante a execu\u00e7\u00e3o dos processos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ud83d\udca1<\/span> <b>Saiba mais<\/b><span style=\"font-weight: 400;\">: <\/span><a href=\"https:\/\/www.selenium.dev\/documentation\/webdriver\/\"><span style=\"font-weight: 400;\">Documenta\u00e7\u00e3o Selenium WebDriver<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Vantagens de desenvolver automa\u00e7\u00e3o com Python e Selenium<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O Python \u00e9 uma linguagem de programa\u00e7\u00e3o conhecida por sua simplicidade e pelo seu poder. \u00c9 tamb\u00e9m bastante vers\u00e1til, o que a torna a escolha ideal para o desenvolvimento de automa\u00e7\u00e3o Web, enquanto a integra\u00e7\u00e3o com o Selenium pode facilitar bastante o processo de automa\u00e7\u00e3o de tarefas complexas.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tanto o Python quanto o Selenium possuem suporte multiplataforma e essa compatibilidade significa que os c\u00f3digos desenvolvidos podem ser executados e interpretados por diferentes sistemas operacionais.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A comunidade ativa de ambas as tecnologias torna-se um grande apoio durante o desenvolvimento e, por ser <\/span><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/11\/29\/rpa-open-source\/\"><span style=\"font-weight: 400;\">open source<\/span><\/a><span style=\"font-weight: 400;\">, permite que a contribui\u00e7\u00e3o constante para melhorias possam ser aplicadas quando fazem sentido. Al\u00e9m de diversos materiais dispon\u00edveis para aprender sobre as tecnologias, como esse <\/span><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/01\/16\/como-comecar-a-programar-em-python\/\"><span style=\"font-weight: 400;\">guia com dicas de como come\u00e7ar a programar em Python<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">E n\u00e3o podemos deixar de citar a integra\u00e7\u00e3o com diversos outros frameworks que podem se tornar bastante \u00fateis durante o processo de desenvolvimento e tamb\u00e9m a compatibilidade com diversos navegadores bastante utilizados no dia-a-dia, como Edge, Safari, Chrome e Firefox, permitindo uma experi\u00eancia consistente de automa\u00e7\u00e3o em diferentes ambientes de navega\u00e7\u00e3o.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Exemplo de automa\u00e7\u00e3o com Python e Selenium<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Agora, vamos ao passo a passo para criar uma automa\u00e7\u00e3o com Python e Selenium, desde o preparo do ambiente at\u00e9 o desenvolvimento da automa\u00e7\u00e3o em si. Neste exemplo, vamos criar uma automa\u00e7\u00e3o para consultar o CEP no site oficial dos Correios.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Preparar o ambiente<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Para instalar o Selenium, voc\u00ea precisa executar o seguinte comando no seu terminal:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">pip install selenium<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Essa instala\u00e7\u00e3o 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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">E no seu c\u00f3digo, voc\u00ea dever\u00e1 adicionar a seguinte biblioteca:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">from selenium import webdriver<\/span><\/pre>\n<h3><span style=\"font-weight: 400;\">Configura\u00e7\u00e3o do Selenium WebDriver<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Neste exemplo, vamos utilizar o WebDriver para Firefox, o <\/span><a href=\"https:\/\/github.com\/mozilla\/geckodriver\/releases\"><span style=\"font-weight: 400;\">Geckodriver<\/span><\/a><span style=\"font-weight: 400;\">, mas como mencionado anteriormente, h\u00e1 compatibilidade com outros navegadores, basta voc\u00ea pesquisar por \u201cwebdriver + nome do seu navegador\u201d que ser\u00e1 f\u00e1cil encontr\u00e1-lo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para utilizar o WebDriver em seu c\u00f3digo, voc\u00ea poder\u00e1 fazer de duas maneiras:<\/span><\/p>\n<ol>\n<li><b> Baixar o WebDriver do navegador que deseja utilizar na sua automa\u00e7\u00e3o.<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Fa\u00e7a 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\u00e7\u00e3o ser\u00e1 executada. Em seguida, adicione o webdriver na pasta que voc\u00ea far\u00e1 refer\u00eancia dentro do c\u00f3digo conforme a linha a seguir:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">driver = webdriver.Firefox(executable_path = \u201ccaminho_do_webdriver\u201d)<\/span><\/pre>\n<ol start=\"2\">\n<li><b> Instalar durante a execu\u00e7\u00e3o do c\u00f3digo<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Voc\u00ea poder\u00e1 fazer conforme o c\u00f3digo abaixo:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"># adiciona a importa\u00e7\u00e3o do GeckoDriverManager<\/span>\r\n<span style=\"font-weight: 400;\">from webdriver_manager.firefox import GeckoDriverManager<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">def main( ):<\/span>\r\n<span style=\"font-weight: 400;\">\u2026<\/span>\r\n<span style=\"font-weight: 400;\">    # instancia o WebDriver<\/span>\r\n<span style=\"font-weight: 400;\">    driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())<\/span>\r\n<span style=\"font-weight: 400;\">    \u2026<\/span><\/pre>\n<h3><span style=\"font-weight: 400;\">Desenvolvimento de automa\u00e7\u00e3o Web para buscar CEP<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">At\u00e9 o momento, criamos um arquivo chamado `bot.py` e nosso c\u00f3digo estar\u00e1 assim:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">from selenium import webdriver<\/span>\r\n<span style=\"font-weight: 400;\">from webdriver_manager.firefox import GeckoDriverManager<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">def main():<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# instancia o WebDriver<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())\r\n<\/span>\r\n\r\n<span style=\"font-weight: 400;\">if __name__ == '__main__':<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0main()<\/span><\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">J\u00e1 o nosso arquivo `requirements.txt` estar\u00e1 assim:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">selenium==3.141.0<\/span>\r\n<span style=\"font-weight: 400;\">webdriver-manager==4.0.0<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">O objetivo dessa nossa automa\u00e7\u00e3o de exemplo, ser\u00e1 consultar CEP no site oficial dos Correios. Para isso, podemos criar uma constante tempor\u00e1ria com o link do site e solicitar ao selenium para abrir o link. Em seguida, vamos testar se est\u00e1 funcionando.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">from selenium import webdriver<\/span>\r\n<span style=\"font-weight: 400;\">from webdriver_manager.firefox import GeckoDriverManager<\/span>\r\n\r\n<span style=\"font-weight: 400;\">SITE_CORREIOS = \"https:\/\/buscacepinter.correios.com.br\/app\/endereco\/index.php\"<\/span>\r\n\r\n<span style=\"font-weight: 400;\">def main():<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# instancia o WebDriver<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())<\/span>\r\n<span style=\"font-weight: 400;\">\r\n \u00a0\u00a0\u00a0# acessa p\u00e1gina de consulta do CEP\r\n<\/span><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver.get(SITE_CORREIOS)<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">if __name__ == '__main__':<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0main()<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Ao executar o c\u00f3digo acima, j\u00e1 devemos obter algum resultado que neste caso \u00e9 o bot abrir o site dos correios:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7679\" data-permalink=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/print-site-dos-correios\/\" data-orig-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios.png\" data-orig-size=\"1900,1014\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"print site dos correios\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios-1024x546.png\" class=\"aligncenter wp-image-7679 size-full\" src=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios.png\" alt=\"print da tela de consulta de CEP e endere\u00e7o do site dos Correios.\" width=\"1900\" height=\"1014\" srcset=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios.png 1900w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios-300x160.png 300w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios-1024x546.png 1024w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios-1536x820.png 1536w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-site-dos-correios-1200x640.png 1200w\" sizes=\"auto, (max-width: 1900px) 100vw, 1900px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Podemos agora come\u00e7ar a manipular os elementos da DOM (Document Object Model que significa Modelo de Documento do Objeto \u2013 a estrutura da p\u00e1gina HTML do site que vamos automatizar) com apoio do framework Selenium.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se fossemos realizar a tarefa manualmente, ter\u00edamos que clicar no campo para inserir o CEP digitando pelo teclado e, em seguida, clicar no bot\u00e3o \u201cBuscar\u201d. Mas quem far\u00e1 isso, ser\u00e1 o rob\u00f4. Ent\u00e3o precisamos achar meios de identificar o campo e o bot\u00e3o.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Como mencionado anteriormente, utilizaremos a DOM. E para chegar at\u00e9 ela, vamos clicar com o bot\u00e3o direito do mouse em cima do campo que desejamos identificar e escolher a op\u00e7\u00e3o \u201cInspecionar\u201d do menu.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7673\" data-permalink=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/print-botao-direito-inspecionar\/\" data-orig-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar.png\" data-orig-size=\"594,450\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"print bot\u00e3o direito inspecionar\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar.png\" class=\"aligncenter wp-image-7673 size-full\" src=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar.png\" alt=\"print dos campos de preenchimento da busca de CEP em destaque e o menu mostrando a op\u00e7\u00e3o &quot;inspecionar&quot;.\" width=\"594\" height=\"450\" srcset=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar.png 594w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar-300x227.png 300w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-botao-direito-inspecionar-87x67.png?crop=1 87w\" sizes=\"auto, (max-width: 594px) 100vw, 594px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ap\u00f3s isso, vamos ter acesso \u00e0s configura\u00e7\u00f5es do navegador e ao c\u00f3digo HTML da p\u00e1gina dos Correios. Para acessar o campo de entrada de dados para o CEP ou endere\u00e7o, vamos utilizar o ID, conforme destacado na imagem abaixo. O c\u00f3digo HTML mostra que h\u00e1 um id chamado \u201cendereco\u201d para identificar o elemento. Como esse id \u00e9 \u00fanico, conforme especifica\u00e7\u00f5es do pr\u00f3prio HTML, vamos utiliz\u00e1-lo para acessar via rob\u00f4.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7677\" data-permalink=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/print-inspecionar-campo-endereco\/\" data-orig-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco.png\" data-orig-size=\"1915,1025\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"print inspecionar campo endere\u00e7o\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco-1024x548.png\" class=\"aligncenter wp-image-7677 size-full\" src=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco.png\" alt=\"print da tela de busca de endere\u00e7o do site dos correios com as configura\u00e7\u00f5es e o c\u00f3digo HTML em destaque\" width=\"1915\" height=\"1025\" srcset=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco.png 1915w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco-300x161.png 300w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco-1024x548.png 1024w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco-1536x822.png 1536w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-campo-endereco-1200x642.png 1200w\" sizes=\"auto, (max-width: 1915px) 100vw, 1915px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Para isso, vamos adicionar no c\u00f3digo o seguinte comando:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# identifica o elemento<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0input_cep = driver.find_element_by_id(\"endereco\")<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# insere o valor do CEP no campo endere\u00e7o<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0input_cep.send_keys(CEP)<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Antes da fun\u00e7\u00e3o main, adicionamos tamb\u00e9m uma constante tempor\u00e1ria para testar a inser\u00e7\u00e3o do CEP:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">CEP = \"71691-181\"<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Da mesma forma que fizemos para identificar o elemento do campo do endere\u00e7o, faremos com o bot\u00e3o \u201cBuscar\u201d. Clicamos no bot\u00e3o com o bot\u00e3o direito do mouse e escolhemos a op\u00e7\u00e3o inspecionar. Em seguida, deve aparecer o item identificado no c\u00f3digo HTML da p\u00e1gina.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7675\" data-permalink=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/print-inspecionar-botao-buscar\/\" data-orig-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar.png\" data-orig-size=\"1912,1020\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"print inspecionar bot\u00e3o buscar\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar-1024x546.png\" class=\"aligncenter wp-image-7675 size-full\" src=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar.png\" alt=\"print da tela de busca de endere\u00e7o do site dos correios com as configura\u00e7\u00f5es e o c\u00f3digo HTML em destaque do bot\u00e3o buscar\" width=\"1912\" height=\"1020\" srcset=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar.png 1912w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar-300x160.png 300w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar-1024x546.png 1024w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar-1536x819.png 1536w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-inspecionar-botao-buscar-1200x640.png 1200w\" sizes=\"auto, (max-width: 1912px) 100vw, 1912px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Neste caso, identificamos que tamb\u00e9m h\u00e1 um id para o bot\u00e3o \u201cbuscar\u201d chamado \u201cbtn_pesquisar\u201d, ent\u00e3o vamos utiliz\u00e1-lo. Para identificar o bot\u00e3o e o rob\u00f4 clicar nele, vamos adicionar o seguinte c\u00f3digo:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# identifica o elemento e clica no bot\u00e3o<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0btn_buscar = driver.find_element_by_id(\"btn_pesquisar\")<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0btn_buscar.click()<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Hora de testar nosso c\u00f3digo para validar se est\u00e1 tudo funcionando at\u00e9 aqui. \u00c9 esperado que ao final da execu\u00e7\u00e3o do rob\u00f4, a tela da consulta fique aberta mostrando os endere\u00e7os do CEP inserido na pesquisa.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7685\" data-permalink=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/print\/\" data-orig-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print.png\" data-orig-size=\"1913,1020\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"print\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-1024x546.png\" class=\"aligncenter wp-image-7685 size-full\" src=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print.png\" alt=\"print do resultado da consulta do CEP mostrando o logradouro, bairro, cidade, estado e o CEP\" width=\"1913\" height=\"1020\" srcset=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print.png 1913w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-300x160.png 300w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-1024x546.png 1024w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-1536x819.png 1536w, https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/print-1200x640.png 1200w\" sizes=\"auto, (max-width: 1913px) 100vw, 1913px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">\u00c9 muito comum ser necess\u00e1rio coletar os dados da p\u00e1gina de uma consulta feita para dar andamento \u00e0 automa\u00e7\u00e3o. Neste nosso exemplo, vamos coletar o endere\u00e7o e salvar em uma vari\u00e1vel para podermos interpretar os dados. Com o Selenium podemos fazer da seguinte forma:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# coleta resultados da p\u00e1gina<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0tabela_resultados = driver.find_element_by_id(\"resultado-DNEC\")<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0print(tabela_resultados)<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Mas ao executar o c\u00f3digo e tentar acessar os dados, eles n\u00e3o estar\u00e3o leg\u00edveis. Provavelmente, no seu terminal, ter\u00e1 algo parecido com isso como resposta ao print:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">&lt;selenium.webdriver.firefox.webelement.FirefoxWebElement (session=\"63ec31a9-1322-41d5-8381-4f8703b6f7ce\", element=\"7acfa790-367e-4014-b85d-476e672d838e\")&gt;<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Vamos resolver isso no pr\u00f3ximo t\u00f3pico.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Como integrar com framework Python da BotCity para automa\u00e7\u00e3o RPA<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\u00c9 comum n\u00e3o termos todas as funcionalidades desejadas em um determinado framework. E podemos aproveitar a integra\u00e7\u00e3o entre eles na linguagem de programa\u00e7\u00e3o Python para poder aproveitar melhor cada parte.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para resolvermos o problema de interpretar os dados, vamos usar uma fun\u00e7\u00e3o chamada \u201ctable_to_dict\u201d do framework Open Source da BotCity. Para isso, vamos adicionar o import conforme abaixo:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">from botcity.web.parsers import table_to_dict<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">E no c\u00f3digo adicionaremos a seguinte fun\u00e7\u00e3o:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# converte os dados para um dicion\u00e1rio do Python<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0tabela_resultados = table_to_dict(table=tabela_resultados)[0]<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Ao executar novamente o c\u00f3digo, provavelmente voc\u00ea ter\u00e1 um resultado parecido com o abaixo:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">{'logradouronome': 'Avenida Brasil', 'bairrodistrito': 'Bora Manso', 'localidadeuf': 'Bras\u00edlia\/DF', 'cep': '71691-181'}<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Agora, neste formato, ficar\u00e1 mais f\u00e1cil acessar os campos e os dados para a sua automa\u00e7\u00e3o. E n\u00e3o se esque\u00e7a de adicionar ao final do seu c\u00f3digo a fun\u00e7\u00e3o a seguir, pois \u00e9 uma boa pr\u00e1tica sempre finalizar o navegador ao final da execu\u00e7\u00e3o da sua automa\u00e7\u00e3o RPA.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">driver.quit()<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Voc\u00ea tamb\u00e9m pode explorar mais funcionalidades do framework web da BotCity atrav\u00e9s da <\/span><a href=\"https:\/\/documentation.botcity.dev\/frameworks\/web\/\"><span style=\"font-weight: 400;\">documenta\u00e7\u00e3o<\/span><\/a><span style=\"font-weight: 400;\">, h\u00e1 diversas fun\u00e7\u00f5es que podem te ajudar a aprimorar os seus rob\u00f4s.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para entender como ficou o c\u00f3digo final, acompanhe abaixo:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">from selenium import webdriver<\/span>\r\n<span style=\"font-weight: 400;\">from webdriver_manager.firefox import GeckoDriverManager<\/span>\r\n<span style=\"font-weight: 400;\">from botcity.web.parsers import table_to_dict<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">SITE_CORREIOS = \"https:\/\/buscacepinter.correios.com.br\/app\/endereco\/index.php\"<\/span>\r\n<span style=\"font-weight: 400;\">CEP = \"71691-181\"<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">def main():<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# instancia o WebDriver<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# acessa p\u00e1gina de consulta do CEP<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver.get(SITE_CORREIOS)<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# identifica o elemento<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0input_cep = driver.find_element_by_id(\"endereco\")<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# insere o valor do CEP no campo endere\u00e7o<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0input_cep.send_keys(CEP)<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# identifica o elemento e clica no bot\u00e3o<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0btn_buscar = driver.find_element_by_id(\"btn_pesquisar\")<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0btn_buscar.click()<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0# coleta resultados da p\u00e1gina<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0tabela_resultados = driver.find_element_by_id(\"resultado-DNEC\")<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0# converte os dados para um dicion\u00e1rio do Python<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0tabela_resultados = table_to_dict(table=tabela_resultados)[0]<\/span>\r\n\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0print(tabela_resultados)\r\n<\/span>\r\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0driver.quit()<\/span>\r\n\r\n\r\n<span style=\"font-weight: 400;\">if __name__ == '__main__':<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0main()<\/span><\/pre>\n<h3><span style=\"font-weight: 400;\">Praticando automa\u00e7\u00e3o web com Python\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Este foi apenas um exemplo para que voc\u00ea possa entender melhor como funciona o Selenium com o Python para o desenvolvimento de automa\u00e7\u00f5es Web. H\u00e1 diversas melhorias que podem ser feitas. Ent\u00e3o que tal praticar?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Voc\u00ea pode mudar a forma de inserir dados ao inv\u00e9s de deix\u00e1-los fixos no c\u00f3digo, como o link do site dos Correios e o CEP que deseja consultar. H\u00e1 formas mais din\u00e2micas de fazer isso, por exemplo via <\/span><a href=\"https:\/\/documentation.botcity.dev\/maestro\/features\/task-queue\/#task-parameters\"><span style=\"font-weight: 400;\">par\u00e2metros<\/span><\/a><span style=\"font-weight: 400;\"> ou ainda por <\/span><a href=\"https:\/\/documentation.botcity.dev\/plugins\/microsoft\/excel\/\"><span style=\"font-weight: 400;\">planilhas<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Falando em aprimorar seu c\u00f3digo, o pr\u00f3ximo passo ideal \u00e9 voc\u00ea aprender tamb\u00e9m como gerenciar a sua automa\u00e7\u00e3o. E uma excelente forma de fazer isso seria pelo BotCity Orquestrador. Entenda melhor o passo a passo de como orquestrar sua automa\u00e7\u00e3o Selenium pelo artigo \u201c<\/span><a href=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/03\/17\/orquestrando-e-gerenciando-sua-automacao-selenium\/\"><span style=\"font-weight: 400;\">Orquestrando e gerenciando sua automa\u00e7\u00e3o Selenium em Python RPA<\/span><\/a><span style=\"font-weight: 400;\">\u201d.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Tudo certo para explorar mais sobre automa\u00e7\u00e3o Web?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Para ir mais a fundo neste assunto, te convidamos a participar da nossa comunidade global de RPA, \u00e9 s\u00f3 entrar no nosso <\/span><a href=\"https:\/\/join.slack.com\/t\/communitybotcitydev\/shared_invite\/zt-xt5lu9bq-l2E1gcf9pZgr4UrnIRJMLw\"><span style=\"font-weight: 400;\">Slack<\/span><\/a><span style=\"font-weight: 400;\"> ou ainda entrar em contato pelo nosso <\/span><a href=\"https:\/\/community.botcity.dev\/\"><span style=\"font-weight: 400;\">f\u00f3rum<\/span><\/a><span style=\"font-weight: 400;\">. Qualquer d\u00favida, s\u00f3 chamar a gente! E n\u00e3o esque\u00e7a de criar a sua <\/span><a href=\"https:\/\/developers.botcity.dev\/signup\"><span style=\"font-weight: 400;\">conta gratuita<\/span><\/a><span style=\"font-weight: 400;\"> para testar as funcionalidades que estamos explorando em nossos conte\u00fados.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Automa\u00e7\u00e3o Web com Python \u00e9 uma ferramenta bastante importante para facilitar e escalar a execu\u00e7\u00e3o de tarefas que sejam repetitivas e acelerar processos manuais. Neste artigo, vamos entender mais sobre o que \u00e9, como funciona e como desenvolver esse tipo de projeto utilizando Python e Selenium, com exemplos e explica\u00e7\u00e3o sobre as vantagens dessas tecnologias.<\/p>\n","protected":false},"author":214060721,"featured_media":7689,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[773019],"tags":[],"class_list":["post-7669","post","type-post","status-publish","format-standard","has-post-thumbnail","category-nao-categorizado"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]<\/title>\n<meta name=\"description\" content=\"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]\" \/>\n<meta property=\"og:description\" content=\"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-12T22:10:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-11T18:06:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lorhan Caproni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lorhan Caproni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/\"},\"author\":{\"name\":\"Lorhan Caproni\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/person\\\/c70dcd8d50fca4702dc06ce662e0f111\"},\"headline\":\"Automa\u00e7\u00e3o Web com Python e Selenium: como fazer?\",\"datePublished\":\"2024-02-12T22:10:58+00:00\",\"dateModified\":\"2025-09-11T18:06:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/\"},\"wordCount\":1884,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/Capas-para-artigos-2-1.png\",\"articleSection\":[\"N\u00e3o categorizado\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/\",\"name\":\"Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/Capas-para-artigos-2-1.png\",\"datePublished\":\"2024-02-12T22:10:58+00:00\",\"dateModified\":\"2025-09-11T18:06:19+00:00\",\"description\":\"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/Capas-para-artigos-2-1.png\",\"contentUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/Capas-para-artigos-2-1.png\",\"width\":1400,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2024\\\/02\\\/12\\\/automacao-web-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automa\u00e7\u00e3o Web com Python e Selenium: como fazer?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\",\"name\":\"Blog BotCity\",\"description\":\"Explore o blog BotCity com conte\u00fados para automatizar e governar em Python. Mantenha-se informado e melhore o desempenho tecnol\u00f3gico, a seguran\u00e7a e o ROI da sua empresa.\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\",\"name\":\"BotCity\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo_botcity_2024_black.png\",\"contentUrl\":\"http:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo_botcity_2024_black.png\",\"width\":1611,\"height\":384,\"caption\":\"BotCity\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/person\\\/c70dcd8d50fca4702dc06ce662e0f111\",\"name\":\"Lorhan Caproni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"caption\":\"Lorhan Caproni\"},\"description\":\"BotCity Cofounder and CEO\",\"sameAs\":[\"http:\\\/\\\/botcitydev.wordpress.com\"],\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/author\\\/lorhanb8c3fbc9af\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]","description":"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/","og_locale":"pt_BR","og_type":"article","og_title":"Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]","og_description":"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.","og_url":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/","og_site_name":"Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a","article_published_time":"2024-02-12T22:10:58+00:00","article_modified_time":"2025-09-11T18:06:19+00:00","og_image":[{"width":1400,"height":800,"url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","type":"image\/png"}],"author":"Lorhan Caproni","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Lorhan Caproni","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#article","isPartOf":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/"},"author":{"name":"Lorhan Caproni","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/person\/c70dcd8d50fca4702dc06ce662e0f111"},"headline":"Automa\u00e7\u00e3o Web com Python e Selenium: como fazer?","datePublished":"2024-02-12T22:10:58+00:00","dateModified":"2025-09-11T18:06:19+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/"},"wordCount":1884,"commentCount":0,"publisher":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","articleSection":["N\u00e3o categorizado"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/","url":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/","name":"Automa\u00e7\u00e3o Web com Python e Selenium [Passo a passo]","isPartOf":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#primaryimage"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","datePublished":"2024-02-12T22:10:58+00:00","dateModified":"2025-09-11T18:06:19+00:00","description":"Aprenda como desenvolver uma automa\u00e7\u00e3o web utilizando Python RPA e Selenium, assim como as vantagens dessa abordagem.","breadcrumb":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#primaryimage","url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","contentUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","width":1400,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/blog.botcity.dev\/pt-br\/2024\/02\/12\/automacao-web-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.botcity.dev\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Automa\u00e7\u00e3o Web com Python e Selenium: como fazer?"}]},{"@type":"WebSite","@id":"https:\/\/blog.botcity.dev\/pt-br\/#website","url":"https:\/\/blog.botcity.dev\/pt-br\/","name":"Blog BotCity","description":"Explore o blog BotCity com conte\u00fados para automatizar e governar em Python. Mantenha-se informado e melhore o desempenho tecnol\u00f3gico, a seguran\u00e7a e o ROI da sua empresa.","publisher":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.botcity.dev\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization","name":"BotCity","url":"https:\/\/blog.botcity.dev\/pt-br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/logo\/image\/","url":"http:\/\/blog.botcity.dev\/wp-content\/uploads\/2025\/09\/logo_botcity_2024_black.png","contentUrl":"http:\/\/blog.botcity.dev\/wp-content\/uploads\/2025\/09\/logo_botcity_2024_black.png","width":1611,"height":384,"caption":"BotCity"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/person\/c70dcd8d50fca4702dc06ce662e0f111","name":"Lorhan Caproni","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","caption":"Lorhan Caproni"},"description":"BotCity Cofounder and CEO","sameAs":["http:\/\/botcitydev.wordpress.com"],"url":"https:\/\/blog.botcity.dev\/pt-br\/author\/lorhanb8c3fbc9af\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2024\/02\/Capas-para-artigos-2-1.png","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pdx8c3-1ZH","_links":{"self":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/7669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/users\/214060721"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/comments?post=7669"}],"version-history":[{"count":11,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/7669\/revisions"}],"predecessor-version":[{"id":9935,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/7669\/revisions\/9935"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/media\/7689"}],"wp:attachment":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/media?parent=7669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/categories?post=7669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/tags?post=7669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}