Recursos e ChromeOptions

Os recursos são opções que você pode usar para personalizar e configurar uma sessão do ChromeDriver. Esta página documenta todos os recursos compatíveis com o ChromeDriver e como usá-los.

As APIs de linguagem do WebDriver oferecem maneiras de transmitir recursos para o ChromeDriver. O mecanismo exato varia de acordo com o idioma, mas a maioria dos idiomas usa um ou ambos os mecanismos a seguir:

  1. Use a classe ChromeOptions. Ele é compatível com Java, Python etc.
  2. Use a classe DesiredCapabilities. Isso é suportado por Python, Ruby etc. Embora também esteja disponível em Java, seu uso em Java está obsoleto.

Como usar a classe ChromeOptions

Você pode criar uma instância de ChromeOptions, que tem métodos convenientes para configurar recursos específicos do ChromeDriver. Você pode transmitir o ChromeOptions no construtor do ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Desde o Selenium versão 3.6.0, a classe ChromeOptions em Java também implementa a interface Capabilities, permitindo que você especifique outros recursos do WebDriver não específicos do ChromeDriver.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Como usar DesiredCapabilities

Para usar DesiredCapabilities, você precisa saber o nome do capability e o tipo de valor necessário. Confira a lista completa aqui.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Casos de uso comuns

Usar um perfil personalizado (também chamado de diretório de dados do usuário)

Por padrão, o ChromeDriver cria um novo perfil temporário para cada sessão. É possível que você queira definir preferências especiais ou usar um perfil totalmente personalizado. Se for a primeira vez, você poderá usar o "chrome.prefs" (descrito abaixo) para especificar as preferências que serão aplicadas depois que o Google Chrome for iniciado. No último caso, use a chave da linha de comando do Chrome user-data-dir para informar ao Chrome qual perfil usar:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Para criar seu próprio perfil personalizado, execute o Chrome (na linha de comando ou pelo ChromeDriver) com a chave user-data-dir definida como um novo diretório. Se o caminho não existe, o Chrome cria um novo perfil no local especificado. Você pode modificar as configurações do perfil como quiser, e o ChromeDriver pode usar o perfil no futuro. Abra chrome://version no navegador para ver qual perfil o Chrome está usando.

Iniciar o Chrome no modo maximizado

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Usar um executável do Chrome em um local não padrão

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Bloquear janelas de caixas de diálogo

Por padrão, o ChromeDriver configura o Chrome para permitir janelas pop-up. Se você quiser bloquear pop-ups (por exemplo, restaurar o comportamento normal do Chrome quando ele não for controlado pelo ChromeDriver), faça o seguinte:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Definir diretório de download

Com o código abaixo, você configura o Chrome para fazer o download de arquivos em um diretório específico. No entanto, há várias ressalvas a serem observadas:

  • O Chrome não permite o uso de determinados diretórios para download. Em particular, não é possível usar a pasta "Desktop" como diretório de download. No Linux, também não é possível usar o diretório principal para download. Como a lista exata de diretórios proibidos está sujeita a alterações, é recomendável usar um diretório que não tenha um significado especial para o sistema.
  • O ChromeDriver não espera automaticamente a conclusão do download. Se você chamar driver.quit() muito cedo, o Chrome poderá ser encerrado antes da conclusão do download.
  • Os caminhos relativos nem sempre funcionam. Para um melhor resultado, use o caminho completo.
  • No Windows, use "" como separadores de caminho. Usar "/" não é confiável no Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Capacidades reconhecidas

Consulte a documentação do Selenium e o padrão W3C WebDriver (links em inglês) para ver os padrões aceitos pelo ChromeDriver. Aqui, listamos apenas as especificações do Chrome recursos.

Objeto ChromeOptions

A maioria dos recursos específicos do Chrome é exposta pela ChromeOptions objeto. Em algumas linguagens, isso é implementado pela classe ChromeOptions. Em outros idiomas, elas são armazenadas no dicionário goog:chromeOptions em os recursos desejados.

Nome Tipo Padrão  Descrição 
args  lista de strings   Lista de argumentos de linha de comando que podem ser usados ao iniciar o Chrome. Os argumentos com um valor associado devem ser separados por um "=" (por exemplo, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consulte aqui para ver uma lista de argumentos do Chrome.
binary corda   Caminho para o executável do Chrome a ser usado (no Mac OS X, esse deve ser o binário real, não apenas o app, como "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome")
extensions lista de strings   Uma lista de extensões do Chrome para instalar na inicialização. Cada item na lista precisa ser uma extensão compactada do Chrome (.crx) codificada em base64.
localState dicionário   Um dicionário em que cada entrada consiste no nome da preferência e no valor dela. Essas preferências são aplicadas ao arquivo "Estado local" na pasta de dados do usuário.
prefs dicionário   Um dicionário em que cada entrada consiste no nome da preferência e no valor dela. Essas preferências são aplicadas apenas ao perfil do usuário em uso. Consulte a seção "Preferências" no diretório de dados do usuário do Chrome para ver exemplos.
detach booleano falsa Se for falso, o Chrome será encerrado quando o ChromeDriver for encerrado, independentemente de a sessão ser encerrada. Se definida como verdadeira, o Chrome só será encerrado se a sessão for encerrada (ou encerrada). Se for verdadeiro e a sessão não for encerrada, o ChromeDriver não poderá limpar o diretório temporário de dados do usuário que está usando a instância do Chrome em execução.
debuggerAddress corda
Um endereço de um servidor do depurador do Google Chrome ao qual se conectar, no formato de <hostname/ip:port>, por exemplo, "127.0.0.1:38947"
excludeSwitches lista de strings   Lista de chaves de linha de comando do Chrome para excluir os passes do ChromeDriver por padrão ao iniciar o Chrome. Não prefixe chaves com --.
minidumpPath  corda   Diretório para armazenar minidumps do Chrome . Compatível apenas com Linux.
mobileEmulation dicionário   Um dicionário com um valor para "deviceName" ou valores para "deviceMetrics" e "userAgent". Consulte Emulação de dispositivo móvel para mais informações.
perfLoggingPrefs dicionário   Um dicionário opcional que especifica preferências de geração de registros de desempenho. Veja mais informações a seguir.
windowTypes lista de strings   Uma lista de tipos de janela que vai aparecer na lista de alças. Para acessar <webview> elementos, inclua "webview" nesta lista.

Objeto perfLoggingPrefs

O dicionário perfLoggingPrefs tem o seguinte formato (todas as chaves são opcionais):

Nome Tipo Padrão Descrição
enableNetwork booleano verdadeiro Se é necessário coletar eventos do domínio de rede.
enablePage booleano verdadeiro Se deve ou não coletar eventos do domínio da página.
traceCategories string (vazio) É uma string separada por vírgulas de categorias de rastreamento do Chrome em que os eventos de rastreamento precisam ser coletados. Uma string não especificada ou vazia desativa o rastreamento.
bufferUsageReportingInterval número inteiro positivo 1000 O número solicitado de milissegundos entre os eventos de uso do buffer de rastreamento do DevTools. Por exemplo, se for 1.000, uma vez por segundo, o DevTools informará quão cheio o buffer de rastreamento está. Se um relatório indicar que o uso do buffer é 100%, um aviso será emitido.

Recursos retornados

Esta é uma lista de todos os recursos retornados específicos do Chrome. (ou seja, o que o ChromeDriver retorna quando você cria uma nova sessão)

Nome Tipo  Descrição 
chrome.chromedriverVersion corda versão do ChromeDriver
userDataDir corda o caminho para o diretório de dados do usuário que o Chrome está usando; isso está dentro de um "chrome" dicionário