DevSecOps

29 jun, 2017

Rodando o Chrome Headless no Windows com Docker

Publicidade

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