Selênio do navegador sem cabeça (HTMLUnitDriver)

Um navegador headless é um navegador da web sem interface gráfica de usuário. Ele pode ser executado em segundo plano sem distrações visuais. Ele oferece uma maneira eficiente e eficaz de testar aplicativos da web, economizando tempo e recursos. Neste tutorial, vamos nos aprofundar no que é um navegador headless, quando usar o teste de navegador headless e como executá-lo usando Selenium.

O que é o navegador sem cabeça?

Um navegador sem cabeça é um navegador da web sem uma interface gráfica de usuário. Este programa se comportará como um navegador, mas não mostrará nenhuma GUI.

Alguns dos exemplos de drivers sem cabeça incluem

  • HtmlUnitName
  • Fantasma
  • PhantomJSGenericName
  • ZumbiJS
  • Watir-webdriver

Quando usar o teste de navegador sem cabeça?

Na era digital de hoje, os aplicativos da web são desenvolvidos para serem compatíveis com uma ampla variedade de dispositivos e plataformas. Isso geralmente representa um desafio para os desenvolvedores de sites que precisam garantir que seus aplicativos funcionem perfeitamente nessas plataformas. O teste de navegador headless é uma solução ideal para esse problema, pois permite que os desenvolvedores testem seus aplicativos da web sem a necessidade de uma interface gráfica de usuário. Ao usar o teste de navegador headless, os desenvolvedores podem facilmente testar complex aplicativos da web com vários componentes e dependências, abrindo caminho para um desenvolvimento mais rápido, código livre de bugs e usuários satisfeitos.

Teste de navegador sem cabeça com Selenium

Selenium é uma ferramenta poderosa para testes de navegador sem cabeça, além dewing desenvolvedores executem testes automatizados sem a necessidade de uma interface de usuário visível. Ao executar testes em segundo plano, o Selenium pode economizar tempo e recursos, ao mesmo tempo que ajuda a identificar problemas que podem não ser aparentes em um ambiente de teste tradicional baseado em UI. Isso inclui questões relacionadas ao desempenho e problemas de layout que só podem se tornar evidentes em um ambiente sem cabeça. No entanto, é importante ter em mente as limitações dos testes headless e equilibrá-los com métodos tradicionais baseados em UI para garantir uma cobertura abrangente de testes.

Exemplos populares de navegadores sem cabeça

Existem muitos navegadores headless disponíveis, cada um com seus próprios recursos e benefícios exclusivos, tornando-os adequados para diferentes casos de uso. Nós os discutimos abaixo: -

PhantomJSGenericName

PhantomJS é um navegador headless que utiliza WebKit como mecanismo de renderização e oferece suporte a vários padrões da web, como HTML5, CSS3 e JavaScript. Ele pode ser usado para tarefas de captura de tela e automação de páginas. É de código aberto e compatível com vários sistemas operacionais.

Exemplo de Selenium com Headless PhantomJS em Python

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Chrome

O Chrome é o navegador mais popular do planeta e também oferece um recurso sem cabeça. Ele pode ser usado em várias plataformas e oferece suporte a linguagens de programação e estruturas. Suas ferramentas de depuração integradas e extensa documentação facilitam o uso e a solução de quaisquer problemas que possam surgir durante os testes.

Exemplo de Headless Chrome com Selenium em Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox é um navegador popular que também pode ser usado como navegador sem cabeça para fins de teste. Um dos benefícios de usar Firefox como um navegador headless é sua natureza leve, tornando-o uma opção versátil para testes em vários sistemas operacionais. Além disso, com sua extensa documentação e suporte da comunidade, Firefox é uma excelente escolha para quem deseja experimentar a tecnologia de navegador sem cabeça.

Exemplo de sem cabeça Firefox com Selenium em Python

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Vantagens do teste de navegador sem cabeça

  • Execução de teste mais rápida
  • Testes econômicos
  • Melhor cobertura de testes
  • Flexibilidade na execução de testes
  • Integração com pipelines de CI/CD

Desvantagens do teste de navegador sem cabeça

  • Falta de GUI
  • Dificuldades na depuração
  • Suporte limitado ao navegador

HTMLUnitDriver

HTML UnitDriver é o navegador headless mais leve e de implementação mais rápida do WebDriver. É baseado em HtmlUnit. É conhecido como Driver de navegador sem cabeça. É o mesmo que Chrome, IE ou FireFox driver, mas não possui GUI, portanto não é possível ver a execução do teste na tela.

Recursos do driver da unidade HTML

  • Suporte para os protocolos HTTPS e HTTP
  • Suporte para respostas HTML (clicar em links, enviar formulários, percorrer o modelo DOM do documento HTML, etc.)
  • Suporte para cookies
  • Suporte a servidor proxy
  • Suporte para autenticação básica e NTLM
  • Excelente JavaScript ajuda
  • Suporte para métodos de envio GET e POST
  • Capacidade de personalizar os cabeçalhos de solicitação enviados ao servidor
  • Capacidade de determinar se as respostas com falha do servidor devem lançar exceções ou devem ser retornadas como páginas do tipo apropriado

Etapas para usar o driver HTMLUnit com Selenium

Passo 1) In Eclipse, copie o seguintewing código. Adicione os arquivos da biblioteca Selenium padrão ao projeto. Nenhum arquivo jar adicional é necessário.

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HTML unit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. Webdriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

Etapa 2) Execute o código. Você observará que nenhum navegador foi iniciado e os resultados são mostrados no console.

Etapas para usar o driver HTMLUnit com Selenium

Benefícios do driver da unidade HTML:

  • Como não está usando nenhuma GUI para testar, seus testes serão executados em segundo plano sem qualquer interrupção visual
  • Em comparação com todas as outras instâncias, a execução é mais rápida
  • Para executar seus testes através do driver HtmlUnit você também pode selecionar outras versões do navegador
  • É independente de plataforma e mais fácil de executar vários testes simultaneamente. Ideal para Teste de carga.

Limitações:

  • Não pode emular o comportamento JavaScript de outros navegadores

PhantomJSGenericName

PhantomJS é um navegador headless com API JavaScript. É uma solução ideal para testes de sites sem cabeça, acessar e manipular páginas da web e vem com a API DOM padrão.

Para usar o PhantomJS com o Seleniun, é necessário usar o GhostDriver. Motorista Fantasma é uma implementação do protocolo Webdriver Wire em JS simples para PhantomJS.

A última versão do PhatomJS tem integrado GhostDriver e não há necessidade de instalá-lo separadamente.

Aqui está como o sistema funciona-

PhantomJSGenericName

Passos para executar Selenium com PhatomJS

Passo 1) Você precisa Eclipse com Selênio instalado

Passo 2) Baixar PhantomJS plítica de privacidade

Passos para executar Selenium com PhatomJS

Passo 3) Extraia a pasta baixada para Arquivos de Programas

Passos para executar Selenium com PhatomJS

Passo 4) Baixe o driver PhantomJS em plítica de privacidade . Adicione o jar ao seu projeto

Passos para executar Selenium com PhatomJS

Passo 5) Cole o seguintewing código em eclipse

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

Passo 6) Execute o código. Você observará que a saída é mostrada no console e nenhum navegador é iniciado.

NOTA: na primeira execução, com base nas suas configurações, você poderá receber um aviso de segurança do Windows para permitir a execução do PhantomJS. Clique em Permitir acesso.

Passos para executar Selenium com PhatomJS

Muitas organizações usam Phantom.JS para diversos fins, por exemplo,

  • Teste sem cabeça
  • Screen Capture
  • Automação de página
  • Rede de Monitorização
  • Para renderizar capturas de tela do painel para seus usuários
  • Para executar testes de unidade na linha de comando
  • Para gerar manuais de funcionários de HTML para PDF
  • Combinado com QUnit para o conjunto de testes

Resumo

Para testar o aplicativo rapidamente em vários navegadores e sem qualquer interrupção visual, navegador headless ensaio é usado. Devido à sua velocidade, precisão e recursos de fácil acesso, o driver de unidade HTML e o PhantomJS estão ganhando popularidade para testes de automação de navegador sem cabeça. Por seguirwing com alguns passos simples você saberá com que facilidade essas ferramentas podem ser integradas a outras ferramentas e executar o código de teste.