Executando Testes no Selenium com Chrome Headless

Introdução

Antes da nova versão do Google Chrome 59 a execução de testes via um browser headless precisava ser feito por algum browser headless como PhantomJSSlimerJSTrifleJSNightmare e HTMLUnit.

O problema é que estes browsers simulam as engines dos browsers reais, mas não a engine V8 (do Google Chrome).

PhantomJS | QtWebKit
SlimerJS      | Gecko (Firefox)
TrifleJS        | Trident (Internet Explorer)
Nightmare   | Electron

Então, como estamos falando em execução de teste é necessário simular o browser real, mesmo em headless para garantir qualquer compatibilidade.

Com fazer isso usando Java

O Google Chrome traz a possibilidade da utilização do headless na versão 59 (como você pode ver aqui).
No código abaixo, para informar a utilização do headless, note que usamos o ChromeOption para poder adicionar argumentos (addArguments).

// imports omitidos
public class ChromeHeadlessTest {

   @Test
   public void testExecution() throws IOException {
      System.setProperty("webdriver.chrome.driver", "<caminho_chromedriver>");

      // Adicione as opções do Google Chrome. A opção window-size é importante para sites responsivos
      ChromeOptions options = new ChromeOptions();
      options.addArguments("headless");
      options.addArguments("window-size=1200x600");

      WebDriver driver = new ChromeDriver(options);
      driver.get("http://seleniumhq.org");
        
      // uma garantia que o script realmente executou como headless
      assertTrue(driver.findElement(By.id("q")).isDisplayed());

      driver.quit();
   }
}

 

A opção headless informa ao Google Chrome que ele deve executar como headless.
A opção window-size é uma forma de controlar a responsividade de página (a página pode ser apresentada como mobile caso você não informe o tamanho da janela).

Você pode ver outras informações par ao ChromeOptions no link abaixo.
https://sites.google.com/a/chromium.org/chromedriver/capabilities

Atenção: O Headless no Chrome 59 só está disponível para Mac e Linux.  Em breve teremos novidades para o Windows!

Leave a Reply

Your email address will not be published. Required fields are marked *