Uma plataforma de baixo código que combina a simplicidade sem código com o poder do código completo 🚀
Comece gratuitamente
2 de março de 2025
.
5
min ler

Usando navegadores sem cabeça com Selenium: configuração e exemplos de código

Jorge Miloradovitch
Pesquisador, redator e entrevistador de casos de uso
Índice

Os navegadores headless permitem que você execute interações automatizadas da web mais rapidamente, ignorando a interface gráfica. Isso os torna ideais para testes, scraping e automação de formulários. Aqui está o que você precisa saber:

  • Por que usar o modo sem cabeça?
    • 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, web scraping e fluxos de trabalho de CI/CD.
  • Requisitos de configuração:
    • Ferramentas necessárias: Python (v3.7+), Selênio, drivers de navegador e navegadores compatíveis (Chrome v109 +, Firefox, borda).
    • Instalação: Use pip install selenium e configurar o modo headless com argumentos simples como --headless=new.
  • Dicas importantes para o sucesso:
    • Defina tamanhos de janela fixos para resultados consistentes.
    • Use esperas explícitas para conteúdo dinâmico.
    • Depure com capturas de tela e logs.

Comparação Rápida

Característica Modo sem cabeça Navegador Padrão
Velocidade 2–15× mais rápido velocidade padrão
Uso de recursos Baixo Alta
Feedback visual nenhum GUI completa
Automação Integração mais fácil Configuração mais complexa

Os navegadores headless são poderosos para automação rápida e eficiente. Siga as etapas de configuração e as melhores práticas para simplificar seu fluxo de trabalho.

Selênio x Python, para automatizar o Headless Browser

Selênio

Guia de configuração para navegadores sem cabeçalho Selenium

Veja como você pode configurar o Selenium para automação de navegador headless.

Instalar componentes necessários

Você precisará dos seguintes componentes instalados:

Componente Requisitos da versão Propósito
Python 3.7 ou superior Ambiente de programação
Selenium WebDriverName Última versão estável Estrutura de automação do navegador
Drivers do navegador Última versão estável Controladores para navegadores específicos
Navegadores Chrome (v109+ para modo headless), Firefox, Edge Navegadores de destino para automação

Dica: Certifique-se de que os drivers do navegador correspondem às versões do seu navegador para evitar problemas de compatibilidade.

Configurar 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

"Selenium automatiza navegadores. É isso!" - selenium.dev

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 estes passos para colocar sua automação headless Selenium em funcionamento!

sbb-itb-23997f1

Usando navegadores sem cabeça no Selenium

Chrome Configuração do modo sem cabeça

Chrome

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

Firefox Configuração do modo sem cabeça

Firefox

Para habilitar o modo headless no Firefox com GeckoDriver, use o seguinte código:

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)

borda Configuração do modo sem cabeça

borda

O Edge também suporta modo headless, e a configuração é similar ao Chrome. Aqui está 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 os usuários executem scripts automatizados em modo headless, o que significa que a janela do navegador não ficaria visível." - Diego Molina, Selenium

Certifique-se de ligar driver.quit() após seus testes para liberar recursos do sistema.

Use essas configurações específicas do navegador junto com as próximas práticas recomendadas para garantir uma automação suave. Fique ligado para dicas sobre como otimizar seu fluxo de trabalho e resolver problemas comuns.

Dicas e guia de solução de problemas

Depois de configurar seus navegadores headless, use estas estratégias para garantir uma automação suave e eficaz.

Dicas de sucesso em 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 renderização consistente de elementos em todas as páginas.
  • Manipule conteúdo dinâmico com esperas explícitas: Isso ajuda a evitar problemas de tempo quando elementos são carregados de forma assíncrona. Aqui está 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"))
)
  • Incorpore rolagem para elementos ocultos: Isso é especialmente útil para páginas que carregam conteúdo dinamicamente conforme você rola.
driver.execute_script("window.scrollBy(0, 100);")

Corrigir problemas comuns

O modo headless pode às vezes causar problemas como falhas de detecção de elementos ou comportamento inesperado. Veja como lidar com isso:

  • Elemento não encontrado: Certifique-se de que a página foi totalmente carregada. Você pode verificar isso verificando a URL atual:
current_url = driver.current_url

Além disso, tente definir um agente de usuário personalizado ou adicionar lógica de nova tentativa 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)

Scripts de automação de depuração

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

  • Capturar imagens: Salve capturas de tela em pontos críticos para identificar problemas visuais.
driver.save_screenshot("debug_screenshot.png")
  • Implementar registro: Adicione logs detalhados para rastrear 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')
  • Habilitar 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")

Melhores práticas para manutenção

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

  • Armazene dados de teste em arquivos externos para evitar codificação fixa.
  • Use asserções para verificar pontos de verificação importantes em seus scripts.
  • Atualize regularmente os localizadores para corresponder às alterações no aplicativo da web.
  • Mantenha uma estrutura de projeto clara e consistente para simplificar atualizações e depuração.

Resumo

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

Principais usos e vantagens

A automação sem cabeça do Selenium acelera os testes - até 15× mais rápido - pulando a renderização da GUI. Essa abordagem reduz o consumo de recursos e simplifica os fluxos de trabalho de CI/CD.

Os navegadores sem interface são particularmente úteis para:

  • Integração contínua: Integre-se facilmente aos pipelines de CI/CD sem depender de GUIs.
  • Eficiência de recursos: Use menos memória e CPU, permitindo que vários testes sejam executados simultaneamente.
  • Raspagem da web: Extraia dados de forma eficaz de sites com muitos JavaScript.
  • Teste de desempenho de rede: Monitore o comportamento do aplicativo e os tempos de resposta.

Próximos passos

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

Navegador melhor para Consideração Chave
Chrome sem cabeça Automação e testes gerais Amplo suporte e compatibilidade
Firefox sem cabeça Validação entre navegadores Forte conformidade com os 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 apropriados.
  • Use condições de espera para manipular conteúdo dinâmico.
  • Habilite a funcionalidade de captura de tela para fins de depuração.
  • Integre com ferramentas de CI/CD como Jenkins para fluxos de trabalho simplificados.

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

Posts Relacionados do Blog

Blogs relacionados

Caso de uso

Apoiado por