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 da linguagem WebDriver oferecem maneiras de passar recursos para o ChromeDriver. O mecanismo exato difere de acordo com o idioma, mas a maioria dos idiomas usa um ou ambos os mecanismos a seguir:

  1. Usar a classe ChromeOptions. Ela é compatível com Java, Python etc.
  2. Usar a classe DesiredCapabilities. Ela é compatível com Python, Ruby etc. Embora também esteja disponível em Java, o uso em Java foi descontinuado.

Como usar a classe ChromeOptions

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

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

Desde a versão 3.6.0 do Selenium, a classe ChromeOptions em Java também implementa a interface Capabilities, permitindo que você especifique outros recursos do WebDriver não específicos ao 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 a DesiredCapabilities

Para usar DesiredCapabilities, você precisa saber o nome da capacidade e o tipo de valor necessário. Veja 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 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. Às vezes, você pode querer definir preferências especiais ou apenas usar um perfil personalizado. No primeiro caso, você pode usar o recurso "chrome.prefs" (descrito abaixo) para especificar as preferências que serão aplicadas após a inicialização do Chrome. Nesse último caso, você pode usar a chave da linha de comando user-data-dir do Chrome para informar ao navegador 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 para um novo diretório. Se o caminho não existir, o Chrome criará um novo perfil no local especificado. Você poderá modificar as configurações do perfil como quiser, e o ChromeDriver poderá 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 os pop-ups (ou seja, 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 o diretório de download

O código a seguir pode ser usado para configurar o Chrome para fazer o download de arquivos para um diretório específico. No entanto, há várias ressalvas a serem consideradas:

  • O Chrome não permite o download de determinados diretórios. Não é possível usar a pasta da área de trabalho como o 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 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 que o download seja concluído.
  • Os caminhos relativos nem sempre funcionam. Para um melhor resultado, use o caminho completo.
  • No Windows, use "" como separadores de caminho. O uso de "/" 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 conferir os recursos padrão aceitos pelo ChromeDriver. Aqui, listamos apenas os recursos específicos do Chrome.

Objeto ChromeOptions

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

Nome Tipo Padrão  Descrição 
args  Lista de strings   Lista de argumentos de linha de comando a serem usados ao iniciar o Chrome. Argumentos com um valor associado devem ser separados por um sinal '=' (por exemplo, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Clique aqui para conferir uma lista de argumentos do Chrome.
binary string   Caminho para o executável do Chrome a ser usado. No Mac OS X, deve ser o binário real, não apenas o app. Por exemplo, "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
extensions Lista de strings   Uma lista de extensões do Chrome que devem ser instaladas na inicialização. Cada item da lista precisa ser uma extensão do Chrome compactada (.crx) codificada em base64.
localState dictionary   Um dicionário em que cada entrada consiste no nome e no valor da preferência. Essas preferências são aplicadas ao arquivo de estado local na pasta de dados do usuário.
prefs dictionary   Um dicionário em que cada entrada consiste no nome e no valor da preferência. Essas preferências são aplicadas somente ao perfil de usuário em uso. Consulte o arquivo "Preferências" no diretório de dados do usuário do Chrome para ver alguns exemplos.
detach boolean false Se "false", o Chrome será encerrado quando o ChromeDriver for encerrado, mesmo que a sessão seja encerrada. Se for "true", o Chrome só será encerrado se a sessão for encerrada (ou encerrada). Se for definida como verdadeira 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 a instância do Chrome em execução está usando.
debuggerAddress string
Um endereço de servidor depurador do Chrome para se conectar, no formato <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 as permissões padrão do ChromeDriver ao iniciar o Chrome. Não use --.
minidumpPath  string   Diretório para armazenar minidumps do Chrome . Compatível apenas com Linux.
mobileEmulation dictionary   Um dicionário com um valor para "deviceName" ou valores para "deviceMetrics" e "userAgent". Consulte Emulação de dispositivos móveis para mais informações.
perfLoggingPrefs dictionary   Um dicionário opcional que especifica as preferências de geração de registros de desempenho. Veja mais informações a seguir.
windowTypes lista de strings   Uma lista dos tipos de janela que aparecem na lista de identificadores de janela. Para acessar os elementos <webview>, 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 boolean verdadeiro Define se eventos do domínio da rede serão coletados ou não.
enablePage boolean verdadeiro Se é necessário coletar ou não 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á o tamanho do buffer de rastreamento. Se um relatório indicar que o uso do buffer é de 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 string do ChromeDriver
userDataDir string caminho para o diretório de dados do usuário que o Chrome está usando. Dentro de um dicionário "chrome"