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:
- Use a classe
ChromeOptions
. Ele é compatível com Java, Python etc. - 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.
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 |