Todo mundo comemorou quando saiu o Chrome 59, que passou a suportar headless nativamente. Finalmente, vamos poder nos livrar do PhantomJs, que anda super desatualizado, e ter uma suite de testes consistente com o navegador mais usado no mercado. De fato, é algo a se comemorar.
Se você ainda não conhece bem a ideia, esse artigo explica melhor como tudo funciona no headless Chrome: Getting Started with Headless Chrome.
Mas, se você trabalha no Windows, como cerca de 90% do planeta, você vai ter que esperar, porque o suporte a headless só vai sair na versão 60, que deve ainda demorar uns meses.
A não ser que você tenha Docker disponível. Aí, a vida fica bem mais fácil, como sempre.
Eu já adiantei todo o trabalho de investigação, e o resultado é que você só precisa executar:
docker run -ti -p 9222:9222 --cap-add=SYS_ADMIN giggio/chrome
E já terá o Chrome rodando headless dentro de um contêiner, ouvindo na porta padrão, que é a 9222. Se quiser ver como isso foi montado, o repositório está no Github em giggio/docker-chrome. Lá também tem 2 exemplos de como configurar o Selenium. Basicamente, você tem que informar que já tem um Chrome rodando.
Após subir o contêiner, você pode acessar http://localhost:9222/ para verificar que páginas estão abertas. O blog do Chromium explica isso um pouco melhor.
No Node.js:
const options = new Options(); options.options_["debuggerAddress"] = "127.0.0.1:9222"; const driver = new webdriver.Builder() .forBrowser('chrome') .setChromeOptions(options) .build();
E no C#:
var driver = new ChromeDriver(new ChromeOptions { DebuggerAddress = "localhost:9222" })
Nada mais simples, certo?
***
Este artigo foi produzido em parceria com a Lambda3. Leia outros conteúdos no blog da empresa: blog.lambda3.com.br