Recursos e ChromeOptions

Os recursos são opções que podem ser usadas para personalizar e configurar uma sessão do ChromeDriver. Esta página documenta todos os recursos com suporte do 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 usa um ou ambos os seguintes mecanismos:

  1. Use a classe ChromeOptions. Isso é compatível com Java, Python etc.
  2. Use a classe DesiredCapabilities. Isso é compatível com Python, Ruby etc. Embora também esteja disponível no Java, o uso dele no Java foi descontinuado.

Como usar a classe ChromeOptions

É possível criar uma instância de ChromeOptions, que tem métodos convenientes para definir recursos específicos do ChromeDriver. Em seguida, transmita 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 que não sã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);

Usar DesiredCapabilities

Para usar DesiredCapabilities, você precisa saber o nome do capability e o tipo de valor que ele usa. Confira a lista completa.

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

Por padrão, o ChromeDriver cria um novo perfil temporário para cada sessão. Você pode definir preferências especiais ou usar um perfil personalizado, também chamado de diretório de dados do usuário.

Se você estiver usando o perfil temporário, use o recurso chrome.prefs para especificar as preferências que serão aplicadas após a inicialização do Chrome. Para perfis personalizados, use a chave de linha de comando user-data-dir do Chrome para informar qual perfil usar:

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

Crie seu próprio perfil personalizado executando o Chrome na linha de comando ou com o ChromeDriver, usando a chave user-data-dir definida para algum novo diretório.

Se o caminho não existir, o Chrome vai criar um novo perfil no local especificado. Você pode modificar as configurações do perfil, e o ChromeDriver pode usar o perfil no futuro. Abra chrome://version no navegador para saber qual perfil o Chrome está usando.

Iniciar o Chrome maximizado

Inicie o Chrome maximizado usando a chave start-maximized:

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");

Janelas de diálogo de bloqueio

Por padrão, o ChromeDriver configura o Chrome para permitir janelas pop-up. Se você quiser bloquear pop-ups e 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 abaixo pode ser usado para configurar o Chrome para fazer o download de arquivos em um diretório específico. No entanto, há várias ressalvas a serem consideradas:

  • O Chrome não permite o uso de determinados diretórios para download. Não é possível usar a pasta do computador como o diretório de download. No Linux, não é possível usar o diretório principal para fazer o download. A lista exata de diretórios proibidos está sujeita a mudanças. Por isso, recomendamos que você use um diretório exclusivo 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 do término do download.
  • Para melhores resultados, use caminhos completos, já que os caminhos relativos nem sempre funcionam.
  • No Windows, use \` as path separators./` 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);

Recursos reconhecidos

Leia a documentação do Selenium e o padrão W3C WebDriver para conhecer os recursos padrão aceitos pelo ChromeDriver. Aqui, listamos os recursos específicos do Chrome.

Objeto ChromeOptions

A maioria dos recursos específicos do Chrome são expostos pelo objeto ChromeOptions. Em alguns idiomas, eles são implementados pela classe ChromeOptions. Em outros idiomas, elas são armazenadas no dicionário goog:chromeOptions em recursos selecionados.

Nome Tipo Padrão Descrição
args lista de strings    Lista de argumentos de linha de comando a serem usados ao iniciar o Chrome. Os argumentos com um valor associado precisam ser separados por um sinal de igual ("=', por exemplo, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Confira uma lista de argumentos do Chrome.
binary string   Caminho para o executável do Chrome a ser usado.
No macOS 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 da lista precisa ser uma extensão do Chrome compactada codificada em base64 (.crx).
localState dicionário   Um dicionário com cada entrada que consiste no nome da preferência e no valor dela. Essas preferências são aplicadas ao arquivo de estado local na pasta de dados do usuário.
prefs dicionário   Um dicionário com cada entrada que consiste no nome da preferência e no valor dela. Essas preferências são aplicadas apenas ao perfil de usuário em uso. Confira o arquivo "Preferences" no diretório de dados do usuário do Chrome para ver exemplos.
detach booleano falso Se for falso, o Chrome será encerrado quando o ChromeDriver for encerrado, independentemente de a sessão ter sido encerrada.
Se verdadeiro, o Chrome só será encerrado se a sessão for encerrada ou fechada. Se for verdadeiro e a sessão não for encerrada, o ChromeDriver não poderá limpar o diretório de dados de usuário temporário que a instância do Chrome em execução está usando.
debuggerAddress string
Um endereço de um servidor do depurador do Chrome para se conectar, no formato <nomedohost/ip:porta>, como "127.0.0.1:38947"
excludeSwitches lista de strings    Lista de opções de linha de comando do Chrome para excluir o ChromeDriver que, por padrão, é transmitido ao iniciar o Chrome. Não prefixe as chaves com --.
minidumpPath string   Diretório para armazenar minidumps do Chrome. (Somente no Linux)
mobileEmulation dicionário   Um dicionário com um valor para "deviceName" ou valores para "deviceMetrics" e "userAgent". Consulte Emulação para dispositivos móveis para mais informações.
perfLoggingPrefs dicionário   Um dicionário opcional que especifica as preferências de registro de performance. Veja mais informações a seguir.
windowTypes lista de strings   Uma lista de tipos de janelas que aparecem na lista de identificadores de janelas. Para acessar elementos da webview, inclua "webview" nesta lista.
enableExtensionTargets booleano falso Ativa a introspecção de destinos de extensões do Chrome. Por padrão, o ChromeDriver não inclui destinos de extensão (a partir do Chrome 136).

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 é preciso ou não coletar eventos do domínio de rede.
enablePage booleano verdadeiro Se é possível coletar eventos do domínio da página.
traceCategories string (vazio) Uma string separada por vírgulas de categorias de rastreamento do Chrome para as quais os eventos de rastreamento precisam ser coletados. Uma string vazia ou não especificada 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 vai informar o quanto o buffer de rastreamento está cheio. 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 versão do ChromeDriver
userDataDir string caminho para o diretório de dados do usuário que o Chrome está usando. Ele está dentro de um dicionário "chrome"