Las funciones son opciones que puedes usar para personalizar y configurar una sesión de ChromeDriver. En esta página, se documentan todas las funciones compatibles con ChromeDriver y cómo usarlas.
Las APIs de lenguaje WebDriver ofrecen alternativas para transferir funciones a ChromeDriver. El mecanismo exacto difiere según el idioma, pero la mayoría de los idiomas utilizan uno de los siguientes mecanismos o ambos:
- Usa la clase
ChromeOptions
. Esto es compatible con Java, Python, etcétera. - Usa la clase
DesiredCapabilities
. Esta función es compatible con Python, Ruby, etc. Si bien también está disponible en Java, su uso en Java dejó de estar disponible.
Cómo usar la clase ChromeOptions
Puedes crear una instancia de ChromeOptions
, que tiene métodos convenientes para configurar funciones específicas de ChromeDriver. Luego, puedes pasar el objeto ChromeOptions
al constructor de ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
A partir de Selenium 3.6.0, la clase ChromeOptions
en Java también implementa la interfaz Capabilities
, lo que te permite especificar otras capacidades de WebDriver no específicas de 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);
Usa DesiredCapabilities
Para usar DesiredCapabilities
, debes conocer el nombre de la función y el tipo de valor que toma. Consulta la lista completa aquí.
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 habituales
Usa un perfil personalizado (también llamado directorio de datos del usuario)
De forma predeterminada, ChromeDriver creará un nuevo perfil temporal para cada sesión. En ocasiones, es posible que desees configurar preferencias especiales o simplemente usar un perfil personalizado por completo. Si es lo primero, puedes usar la función "chrome.prefs" (que se describe más adelante) para especificar las preferencias que se aplicarán una vez que se inicie Chrome. De lo contrario, puedes usar el interruptor de línea de comandos de Chrome user-data-dir
para indicarle a Chrome qué perfil usar:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
Puedes crear tu propio perfil personalizado simplemente ejecutando Chrome (en la línea de comandos o a través de ChromeDriver) con el interruptor user-data-dir
establecido en algún directorio nuevo. Si la ruta no existe, Chrome creará un perfil nuevo en la ubicación especificada. Luego, puedes modificar la configuración del perfil como desees y ChromeDriver podrá usar el perfil en el futuro. Abre chrome://version en el navegador para ver qué perfil usa Chrome.
Iniciar Chrome maximizado
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
Usar un archivo ejecutable de Chrome en una ubicación no estándar
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
Cómo bloquear ventanas de diálogo
De forma predeterminada, ChromeDriver configura Chrome para permitir ventanas emergentes. Si deseas bloquear las ventanas emergentes (es decir, restablecer el comportamiento normal de Chrome cuando ChromeDriver no las controla), haz lo siguiente:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
Arrays.asList("disable-popup-blocking"));
Configurar el directorio de descarga
El siguiente código permite configurar Chrome para que descargue archivos en un directorio específico. Sin embargo, debes tener en cuenta varias advertencias:
- Chrome no permite el uso de ciertos directorios para la descarga. En particular, no puedes usar la carpeta de escritorio como el directorio de descarga. En Linux, tampoco puedes usar el directorio principal para la descarga. Dado que la lista exacta de directorios prohibidos está sujeta a cambios, te recomendamos que uses un directorio que no tenga un significado especial para el sistema.
- ChromeDriver no espera automáticamente a que se complete la descarga. Si llamas a drive.quit() demasiado pronto, es posible que Chrome se cierre antes de que finalice la descarga.
- Las rutas de acceso relativas no siempre funcionan. Para obtener el mejor resultado, usa la ruta de acceso completa.
- En Windows, usa "" como separador de ruta. El uso de "/" no es confiable en 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 reconocidas
Consulta la documentación de Selenium y el estándar W3C WebDriver para conocer las funciones estándar que acepta ChromeDriver. Aquí solo enumeramos las funciones específicas de Chrome.
Objeto ChromeOptions
La mayoría de las funciones específicas de Chrome se exponen a través del objeto ChromeOptions
. En algunos lenguajes, la clase ChromeOptions
lo implementa. En otros idiomas, se almacenan en el diccionario goog:chromeOptions
en las capacidades deseadas.
Objeto perfLoggingPrefs
El diccionario perfLoggingPrefs tiene el siguiente formato (todas las claves son opcionales):
Nombre | Tipo | Predeterminada | Descripción |
---|---|---|---|
enableNetwork
|
boolean | true | Indica si se deben recopilar eventos del dominio de la red o no. |
enablePage
|
boolean | true | Indica si se deben recopilar o no eventos del dominio de la página. |
traceCategories
|
cadena | (vacío) | Es una cadena de categorías de registro de Chrome separada por comas para la que se deben recopilar eventos de seguimiento. Una string vacía o sin especificar inhabilita el seguimiento. |
bufferUsageReportingInterval
|
número entero positivo | 1,000 | La cantidad de milisegundos solicitada entre los eventos de uso del búfer de seguimiento de Herramientas para desarrolladores. Por ejemplo, si es 1000, una vez por segundo, Herramientas para desarrolladores informará qué tan lleno está el búfer de seguimiento. Si un informe indica que el uso del búfer es del 100%, se emitirá una advertencia. |
Capacidades devueltas
Esta es una lista de todas las funciones que se muestran específicas de Chrome. (es decir, lo que muestra ChromeDriver cuando creas una sesión nueva)
Nombre | Tipo | Descripción |
---|---|---|
chrome.chromedriverVersion
|
cadena | versión de ChromeDriver |
userDataDir
|
cadena | ruta de acceso al directorio de datos del usuario que usa Chrome; ten en cuenta que se encuentra dentro de un diccionario de "chrome" |