Latenode

Como usar navegadores headless com Selenium: configuração e exemplos de código

Aprenda a configurar e usar navegadores headless com Selenium para automação, testes e web scraping mais rápidos, sem interface gráfica.

6 min de leitura
Janela de código com automação Selenium em navegador headless

Navegadores headless permitem executar interações automatizadas na web com mais rapidez ao ignorar a interface gráfica. Isso os torna ideais para testes, extração de dados e automação de formulários. Veja o que você precisa saber:

  • Por que usar o modo headless?
    • Velocidade: 2–15× mais rápido que navegadores comuns.
    • Baixo uso de recursos: Consumo mínimo de memória e CPU.
    • Casos de uso: Testes automatizados, extração de dados da web e fluxos de CI/CD.
  • Requisitos de configuração:
    • Ferramentas necessárias: Python (v3.7+), Selenium, drivers de navegador e navegadores compatíveis (Chrome v109+, Firefox, Edge).
    • Instalação: Use pip install selenium e configure o modo headless com argumentos simples, como --headless=new.
  • Dicas essenciais para ter sucesso:
    • Defina tamanhos fixos de janela para obter resultados consistentes.
    • Use esperas explícitas para conteúdo dinâmico.
    • Faça depuração com capturas de tela e logs.

Comparação rápida

RecursoModo headlessNavegador padrão
Velocidade2–15× mais rápidoVelocidade padrão
Uso de recursosBaixoAlto
Feedback visualNenhumInterface gráfica completa
AutomaçãoIntegração mais fácilConfiguração mais complexa

Navegadores headless são poderosos para uma automação rápida e eficiente. Siga as etapas de configuração e as práticas recomendadas para simplificar seu fluxo.

Selenium x Python para automatizar navegadores headless

Guia de configuração de navegadores headless com Selenium

Veja como configurar o Selenium para automação com navegador headless.

Instale os componentes necessários

Você precisará ter os seguintes componentes instalados:

ComponenteRequisitos de versãoFinalidade
Python3.7 ou superiorAmbiente de programação
Selenium WebDriverVersão estável mais recenteFramework de automação de navegadores
Drivers de navegadorVersão estável mais recenteControladores para navegadores específicos
Navegadores webChrome (v109+ para modo headless), Firefox, EdgeNavegadores-alvo para automação

Dica: Verifique se os drivers de navegador correspondem às versões dos seus navegadores para evitar problemas de compatibilidade.

Configure o ambiente Python

Crie um ambiente Python dedicado para seu projeto:

python -m venv selenium_env
source selenium_env/bin/activate  # For Unix/macOS
selenium_env\Scripts\activate    # For Windows

"O Selenium automatiza navegadores. É só isso!" - selenium.dev [3]

Quando seu ambiente estiver pronto, instale as bibliotecas Python necessárias.

Bibliotecas Python necessárias

Use pip para instalar os pacotes necessários:

pip install selenium
pip install webdriver_manager  # Simplifies driver management

Para o modo headless do Chrome (v109+), configure-o assim:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

No Linux, inclua estes argumentos adicionais para evitar problemas comuns:

chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

Por fim, lembre-se sempre de fechar a instância do WebDriver para liberar recursos:

driver.quit()

Siga estas etapas para colocar sua automação headless com Selenium em funcionamento!

sbb-itb-23997f1

Como usar navegadores headless no Selenium

Configuração do modo headless do Chrome

Para o Chrome (v109+), ative o modo headless usando a flag --headless, conforme explicado anteriormente.

Configuração do modo headless do Firefox

Para ativar o modo headless no Firefox com o GeckoDriver, use o código a seguir:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_options = Options()
firefox_options.add_argument("--headless")
driver = webdriver.Firefox(options=firefox_options)

Configuração do modo headless do Edge

O Edge também oferece suporte ao modo headless, e a configuração é semelhante à do Chrome. Veja um exemplo:

from selenium import webdriver
from selenium.webdriver.edge.options import Options

edge_options = Options()
edge_options.add_argument("--headless")
driver = webdriver.Edge(options=edge_options)

"Headless é um modo de execução para navegadores baseados em Firefox e Chromium. Ele permite que usuários executem scripts automatizados no modo headless, o que significa que a janela do navegador não ficará visível." - Diego Molina, Selenium [1]

Não se esqueça de chamar driver.quit() após seus testes para liberar recursos do sistema.

Use essas configurações específicas de cada navegador junto às práticas recomendadas a seguir para garantir uma automação fluida. Confira dicas para otimizar seu fluxo e resolver problemas comuns.

Guia de dicas e solução de problemas

Após configurar seus navegadores headless, use estas estratégias para garantir uma automação eficiente e sem problemas.

Dicas para o sucesso da automação

Ajuste seu processo de automação com configurações adequadas e ajustes de tempo.

  • Defina um tamanho fixo para a janela do navegador: Use 1920x1080 para garantir uma renderização consistente dos elementos em todas as páginas.
  • Lide com conteúdo dinâmico usando esperas explícitas: Isso ajuda a evitar problemas de temporização quando os elementos são carregados de forma assíncrona. Veja um exemplo:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamic-content"))
)
  • Inclua rolagem para elementos ocultos: Isso é especialmente útil em páginas que carregam conteúdo dinamicamente à medida que você rola a tela.
driver.execute_script("window.scrollBy(0, 100);")

Corrija problemas comuns

Às vezes, o modo headless pode causar problemas como falhas na detecção de elementos ou comportamentos inesperados. Veja como resolvê-los:

  • Elemento não encontrado: Verifique se a página foi totalmente carregada. Você pode fazer isso conferindo a URL atual:
current_url = driver.current_url

Além disso, tente definir um user-agent personalizado ou adicionar uma lógica de novas tentativas para lidar com falhas intermitentes.

  • Eventos de clique não funcionam: Se os métodos de clique padrão falharem, use JavaScript para acionar a ação de clique:
element = driver.find_element(By.ID, "button-id")
driver.execute_script("arguments[0].click();", element)

Faça a depuração de scripts de automação

Quando scripts headless não funcionam como esperado, a depuração é essencial. Veja alguns métodos para investigar problemas:

  • Capture telas: Salve capturas de tela em pontos críticos para identificar problemas visuais.
driver.save_screenshot("debug_screenshot.png")
  • Implemente registros em log: Adicione logs detalhados para acompanhar a execução do script e identificar falhas.
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('Clicking element: button-1')
  • Ative a depuração remota: Use o recurso de depuração remota do Chrome para inspecionar o navegador durante a execução.
chrome_options.add_argument("--remote-debugging-port=9222")

Práticas recomendadas para manutenção

Para manter seus testes confiáveis ao longo do tempo:

  • Armazene dados de teste em arquivos externos para evitar valores fixos no código.
  • Use asserções para verificar pontos de controle importantes nos seus scripts.
  • Atualize regularmente os localizadores para acompanhar mudanças na aplicação web.
  • Mantenha uma estrutura de projeto clara e consistente para simplificar atualizações e a depuração.

Resumo

Esta seção reúne as principais vantagens da automação headless com Selenium e apresenta etapas práticas para ajudar você a começar.

Principais usos e vantagens

A automação headless com Selenium acelera os testes — em até 15× — ao ignorar a renderização da interface gráfica. Essa abordagem reduz o consumo de recursos e simplifica os fluxos de CI/CD [2].

Navegadores headless são especialmente úteis para:

  • Integração contínua: Integre facilmente a pipelines de CI/CD sem depender de interfaces gráficas.
  • Eficiência de recursos: Use menos memória e CPU, permitindo que vários testes sejam executados simultaneamente.
  • Extração de dados da web: Extraia dados de forma eficiente de sites com uso intenso de JavaScript.
  • Testes de desempenho de rede: Monitore o comportamento da aplicação e os tempos de resposta.

Próximas etapas

Para aproveitar ao máximo esses benefícios, considere as seguintes recomendações:

NavegadorIdeal paraConsideração principal
Chrome HeadlessAutomação e testes geraisAmplo suporte e compatibilidade
Firefox HeadlessValidação entre navegadoresForte conformidade com padrões

Dicas de implementação:

  • Configure o WebDriver com opções headless específicas para seu navegador.
  • Defina tamanhos de janela e tempos limite adequados.
  • Use condições de espera para lidar com conteúdo dinâmico.
  • Ative a funcionalidade de captura de tela para fins de depuração.
  • Integre ferramentas de CI/CD como o Jenkins para fluxos mais eficientes.

"O teste de navegador headless é útil para verificar textos, elementos ou outros dados estáticos em determinada página web. Assim como um navegador comum, um navegador headless entende HTML e CSS. Ele também pode executar JavaScript, como solicitações AJAX." [4]

References

FAQ

Frequently Asked Questions

Um navegador headless executa interações web automatizadas sem interface gráfica. No Selenium, você ativa o modo headless pelas opções do navegador (por exemplo, --headless=new para Chrome v109+) para que os scripts sejam executados mais rapidamente, com menor uso de CPU e memória.

Isso foi útil? Compartilhe →

Escrito por

Vasiliy Datsenko

Head of Customer Support

Vasiliy Datsenko é Head of Customer Support na Latenode e um escritor de automação focado em produto. Seu trabalho conecta conversas com clientes, pesquisa de automação de fluxos de trabalho, casos de uso de IA e educação prática sobre produtos para equipes que tentam automatizar processos de negócios reais.

Perfil do autor →

Verificado por

Oleg Zankov

CEO da Latenode, Especialista em No-code

Com uma filosofia enraizada em inovação, resolução de problemas e experiência do usuário, estou focado em capacitar equipes a criar integrações personalizadas e automatizar fluxos de trabalho com facilidade e eficiência. Trazendo uma vasta experiência em desenvolvimento de negócios, empreendedorismo tecnológico e desenvolvimento de software, reconheci a necessidade de uma solução de integração mais acessível, escalável e adaptável. Assim, nasceu a Latenode.com. Com nossa plataforma, as empresas podem aproveitar o poder da tecnologia sem a necessidade de conhecimentos extensos em programação. Apaixonado por promover um futuro onde a tecnologia nos serve, e não o contrário, minha missão é tornar processos complexos simples. Acredito em democratizar a tecnologia e equipar as equipes com as ferramentas para inovar, crescer e ter sucesso em um mundo cada vez mais digital.

Perfil do autor →

Continue lendo