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