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:
- Usa la clase
ChromeOptions
. Esta función 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 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.
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 |