Funciones y opciones de Chrome

Las capabilities 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 de WebDriver proporcionan formas de pasar capacidades a ChromeDriver. El mecanismo exacto difiere según el idioma, pero la mayoría de los idiomas usan uno o ambos de los siguientes mecanismos:

  1. Usa la clase ChromeOptions. Java, Python, etc., admiten esta función.
  2. Usa la clase DesiredCapabilities. Esto es compatible con Python, Ruby, etc. Aunque 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 capacidades 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 la versión 3.6.0 de Selenium, la clase ChromeOptions en Java también implementa la interfaz Capabilities, lo que te permite especificar otras capacidades de WebDriver que no son 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 capability y el tipo de valor que toma. Consulta la 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 habituales

Usa un perfil personalizado

De forma predeterminada, ChromeDriver crea un perfil temporal nuevo para cada sesión. Te recomendamos que configures preferencias especiales o que uses un perfil personalizado, también llamado directorio de datos del usuario.

Si usas el perfil temporal, puedes usar la función chrome.prefs para especificar las preferencias que se aplicarán después de que se inicie Chrome. En el caso de los perfiles personalizados, puedes usar el interruptor de línea de comandos user-data-dir de Chrome para indicarle a Chrome qué perfil usar:

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

Para crear tu propio perfil personalizado, ejecuta Chrome en la línea de comandos o con ChromeDriver, con el interruptor user-data-dir configurado en un directorio nuevo.

Si la ruta de acceso no existe, Chrome crea un perfil nuevo en la ubicación especificada. Luego, puedes modificar la configuración del perfil, y ChromeDriver puede usar el perfil en el futuro. Abre chrome://version en el navegador para ver qué perfil está usando Chrome.

Cómo iniciar Chrome maximizado

Inicia Chrome maximizado con el interruptor start-maximized:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Usar un ejecutable de Chrome en una ubicación no estándar

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Bloquea las ventanas de diálogo

De forma predeterminada, ChromeDriver configura Chrome para permitir ventanas emergentes. Si quieres bloquear las ventanas emergentes y restablecer el comportamiento normal de Chrome cuando ChromeDriver no lo controla, haz lo siguiente:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Cómo configurar el directorio de descarga

El siguiente código se puede usar para configurar Chrome de modo que descargue archivos en un directorio específico. Sin embargo, hay varias advertencias que debes tener en cuenta:

  • Chrome no permite usar ciertos directorios para descargar. En particular, no puedes usar la carpeta de escritorio como directorio de descarga. En Linux, no puedes usar el directorio principal para la descarga. La lista exacta de directorios prohibidos está sujeta a cambios, por lo que te recomendamos que uses un directorio único que no tenga un significado especial para el sistema.
  • ChromeDriver no espera automáticamente a que se complete la descarga. Si llamas a driver.quit() demasiado pronto, es posible que Chrome se cierre antes de que finalice la descarga.
  • Para obtener los mejores resultados, usa rutas de acceso completas, ya que las rutas relativas no siempre funcionan.
  • En Windows, el uso de \` as path separators./` no es confiable.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Funciones reconocidas

Lee la documentación de Selenium y el estándar WebDriver del W3C para conocer las funciones estándar que acepta ChromeDriver. Aquí, 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 los implementa. En otros idiomas, se almacenan en el diccionario goog:chromeOptions en las funciones seleccionadas.

Nombre Tipo Predeterminado Descripción
args lista de cadenas    Es una lista de argumentos de línea de comandos que se deben usar cuando se inicia Chrome. Los argumentos con un valor asociado deben separarse con un signo "=" (como ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consulta una lista de los argumentos de Chrome.
binary string   Es la ruta de acceso al archivo ejecutable de Chrome que se usará.
En macOS X, este debe ser el binario real, no solo la app, como /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions lista de cadenas   Una lista de extensiones de Chrome para instalar al inicio. Cada elemento de la lista debe ser una extensión de Chrome empaquetada y codificada en base 64 (.crx).
localState diccionario   Es un diccionario con cada entrada que consta del nombre de la preferencia y su valor. Estas preferencias se aplican al archivo de estado local en la carpeta de datos del usuario.
prefs diccionario   Es un diccionario con cada entrada que consta del nombre de la preferencia y su valor. Estas preferencias solo se aplican al perfil de usuario en uso. Consulta el archivo "Preferences" en el directorio de datos del usuario de Chrome para ver ejemplos.
detach booleano falso Si es falso, Chrome se cierra cuando se cancela ChromeDriver, independientemente de si se cierra la sesión.
Si es verdadero, Chrome solo se cierra si se cierra la sesión. Si es verdadero y la sesión no se cierra, ChromeDriver no puede limpiar el directorio de datos de usuario temporales que usa la instancia de Chrome en ejecución.
debuggerAddress cadena 
Es la dirección de un servidor de depurador de Chrome al que conectarse, en el formato <nombre de host/IP:puerto>, como "127.0.0.1:38947".
excludeSwitches lista de cadenas    Es una lista de interruptores de línea de comandos de Chrome para excluir que ChromeDriver pase de forma predeterminada cuando se inicia Chrome. No agregues el prefijo -- a los interruptores.
minidumpPath cadena    Es el directorio para almacenar minivolcados de Chrome. (Solo es compatible con Linux).
mobileEmulation diccionario   Un diccionario con un valor para "deviceName" o valores para "deviceMetrics" y "userAgent". Consulta Emulación de dispositivos móviles para obtener más información.
perfLoggingPrefs diccionario   Es un diccionario opcional que especifica las preferencias de registro de rendimiento. Obtenga más información a continuación.
windowTypes lista de cadenas   Es una lista de los tipos de ventanas que aparecen en la lista de controladores de ventana. Para acceder a los elementos de WebView, incluye "webview" en esta lista.
enableExtensionTargets booleano falso Habilita la introspección de los destinos de la extensión de Chrome. De forma predeterminada, ChromeDriver no incluye destinos de extensión (a partir de Chrome 136).

Objeto perfLoggingPrefs

El diccionario perfLoggingPrefs tiene el siguiente formato. Todas las claves son opcionales:

Nombre Tipo Predeterminado Descripción
enableNetwork booleano verdadero Indica si se deben recopilar eventos del dominio de red.
enablePage booleano verdadero Indica si deseas recopilar eventos del dominio de la página.
traceCategories string (vacío) Es una cadena de categorías de seguimiento de Chrome separadas por comas para las que se deben recopilar eventos de seguimiento. Una cadena no especificada o vacía inhabilita el seguimiento.
bufferUsageReportingInterval número entero positivo 1000 Es la cantidad de milisegundos solicitada entre los eventos de uso del búfer de seguimiento de DevTools. Por ejemplo, si es 1000, DevTools informará una vez por segundo 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.

Funciones devueltas

Esta es una lista de todas las funciones específicas de Chrome que se devuelven, es decir, lo que ChromeDriver muestra cuando creas una sesión nueva.

Nombre Tipo Descripción
chrome.chromedriverVersion string de ChromeDriver
userDataDir string Es la ruta de acceso al directorio de datos del usuario que usa Chrome. Ten en cuenta que se encuentra dentro de un diccionario "chrome".