Ir para o conteúdo

Como fazer capturas de tela com Selenium

Selenium é uma ferramenta popular de automação de navegador usada para web scraping, testes e muito mais. Um recurso útil que oferece é a capacidade de fazer capturas de tela de páginas da web durante a automação. Aqui está uma visão detalhada de como fazer capturas de tela de página inteira e em nível de elemento com Selenium em Python.

Introdução à captura de tela com Selenium

Os principais motivos pelos quais você pode querer fazer capturas de tela com Selenium incluem:

  • Salvar cópias de páginas da web que você copiou ou interagiu para depuração ou registros
  • Captura de conteúdo dinâmico, como informações de data/hora ou anúncios para análise posterior
  • Verificando problemas de layout em navegadores e dispositivos
  • Documentando etapas e estados do fluxo de trabalho em testes automatizados
  • Tirar screenshots de imagens captcha para resolvê-las com automação

O Selenium oferece suporte à captura de tela de páginas da web completas e de elementos específicos de uma página. Isso fornece muita flexibilidade para capturar exatamente o que você precisa.

Configurando o Selenium e abrindo um navegador

Para começar, primeiro precisamos importar o Selenium e instanciar um objeto WebDriver para controlar o navegador. O exemplo abaixo mostra a abertura do Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

Outros navegadores como Firefox e Edge funcionam de forma semelhante. Com o objeto driver pronto, agora podemos navegar até uma página da web para fazer uma captura de tela:

driver.get("https://example.com")

Tirando capturas de tela de página inteira

A maneira mais fácil de fazer uma captura de tela de todo o conteúdo da janela do navegador é usar save_screenshot().

Passe um caminho de arquivo para salvar a imagem diretamente no disco:

driver.save_screenshot(‘example_screenshot.png‘)

Alternativamente, você pode obter a captura de tela como bytes PNG na memória ou uma string codificada em Base64:

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

Isso permite salvar a captura de tela em um banco de dados ou enviá-la por HTTP, por exemplo.

Tirando capturas de tela do elemento

Para fazer capturas de tela de um elemento específico na página em vez de tela inteira, primeiro você precisa encontrar o elemento usando um localizador como seletor CSS ou XPath:

element = driver.find_element(By.ID, ‘main-content‘)

Em seguida, ligue .screenshot() no WebElement para capturar apenas aquela parte da página:

element_shot = element.screenshot(‘element.png‘)

Assim como nas capturas de tela completas, você também pode obter os bytes ou a string Base64.

Dicas para capturas de tela confiáveis

Aqui estão algumas dicas para fazer capturas de tela úteis e precisas com o Selenium:

  • Aguarde o carregamento completo das páginas antes de fazer capturas de tela para evitar a captura de estados de carregamento intermediário.
  • Role os elementos para visualização antes de fazer capturas de tela, se necessário.
  • Fique atento a anúncios e conteúdo dinâmico mudando entre as fotos.
  • Faça capturas de tela do celular redimensionando a janela do navegador ou usando emulação móvel.
  • Navegadores sem cabeça como o PhantomJS podem fazer capturas de tela, mas podem perder algum conteúdo.

Casos de uso para capturas de tela do Selenium

Alguns exemplos de como você pode usar capturas de tela do Selenium em seus projetos de web scraping e automação:

  • Depuração e registro – compare as capturas de tela antes e depois para ver as alterações.
  • Captura de conteúdo gerado ou urgente, como painéis.
  • Testes de regressão visual automatizados em versões de navegador.
  • Documentar o fluxo de trabalho e o estado durante as execuções de teste.
  • Captura de tela de captchas para alimentar um serviço de solução.
  • Arquivando dados de páginas raspadas junto com capturas de tela.

Recapitulação e próximas etapas

As etapas para fazer capturas de tela com Selenium em Python são:

  1. Importe Selenium e crie um WebDriver
  2. Navegue até a página da web de destino
  3. Ligar save_screenshot() para capturar a página inteira
  4. Ou encontre um elemento e ligue screenshot() para capturar apenas esse elemento
  5. Ajuste conforme necessário para páginas dinâmicas e dispositivos móveis

Espero que este guia lhe dê uma boa base para fazer capturas de tela em seu próprio projeto Selenium! As possibilidades são infinitas.

Junte-se à conversa

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *