Funciones y opciones de Chrome

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

  1. Usa la clase ChromeOptions. Esta función es compatible con Java, Python, etcétera.
  2. 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 es obsoleto.

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 ChromeOptions en el 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 funciones 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 función y el tipo de valor que toma. Consulte 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

Cómo usar un perfil personalizado (también llamado directorio de datos del usuario)

De forma predeterminada, ChromeDriver creará un nuevo perfil temporal para cada sesión. Es posible que a veces quieras configurar preferencias especiales o simplemente usar un perfil personalizado. Si lo primero es, puedes usar la carpeta "chrome.prefs". (que se describe más adelante) para especificar las preferencias que se aplicarán luego de 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 debe 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 de acceso no existe, Chrome creará un perfil nuevo en la ubicación especificada. Luego, puedes modificar la configuración del perfil como desees, y ChromeDriver puede usar el perfil en el futuro. Abre chrome://version en el navegador para ver qué perfil está usando Chrome.

Iniciar Chrome maximizado

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

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 lo controla), haz lo siguiente:

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

Configurar directorio de descarga

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

  • Chrome no permite el uso de determinados directorios para las descargas. En particular, no puedes usar la carpeta del escritorio como 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 finalice 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 separadores de ruta. Cómo usar "/" 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 capacidades que acepta ChromeDriver. Aquí solo enumeramos las aplicaciones capacidades de integración.

Objeto ChromeOptions

La mayoría de las funciones específicas de Chrome se exponen a través de ChromeOptions. . En algunos lenguajes, esto se implementa a través de la clase ChromeOptions. En otros idiomas, se almacenan en el diccionario goog:chromeOptions en las capacidades deseadas.

Nombre Tipo Predeterminada  Descripción 
args  lista de cadenas   Lista de argumentos de línea de comandos que se deben usar al iniciar Chrome. Los argumentos con un valor asociado deben estar separados por un “=”. (p.ej., ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consulta aquí para obtener una lista de argumentos de Chrome.
binary cadena   Ruta de acceso al ejecutable de Chrome que se usará (en Mac OS X, debe ser el objeto 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 Base64 (.crx).
localState diccionario   Un diccionario en el que cada entrada consiste en el 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   Un diccionario en el que cada entrada consiste en el nombre de la preferencia y su valor. Estas preferencias solo se aplican al perfil de usuario en uso. Consulte las "Preferencias" en el directorio de datos del usuario de Chrome para ver ejemplos.
detach boolean falso Si se establece como "false", Chrome se cerrará cuando se cierre ChromeDriver, independientemente de si se cierra la sesión o no. Si la política se establece en "true", Chrome solo se cerrará cuando la sesión se cierre (o se cierre). Ten en cuenta que, si se establece como verdadera y no se cierra la sesión, ChromeDriver no podrá borrar el directorio de datos temporales del usuario que usa la instancia de Chrome en ejecución.
debuggerAddress cadena
Dirección de un servidor depurador de Chrome al cual conectarse, en forma de <hostname/ip:port>; p.ej., "127.0.0.1:38947"
excludeSwitches lista de cadenas   Lista de interruptores de la línea de comandos de Chrome para excluir ChromeDriver de forma predeterminada cuando se inicia Chrome. No uses prefijos para los interruptores con --.
minidumpPath  cadena   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   Una lista de tipos de ventanas que aparecerán en la lista de controladores de ventana. Para acceder a <webview> elementos, incluya "webview" en esta lista.

Objeto perfLoggingPrefs

El diccionario perfLoggingPrefs tiene el siguiente formato (todas las claves son opcionales):

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

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

Nombre Tipo  Descripción 
chrome.chromedriverVersion cadena versión de ChromeDriver
userDataDir cadena la ruta de acceso al directorio de datos del usuario que usa Chrome ten en cuenta que esto está dentro de diccionario