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:
- Usa la clase
ChromeOptions
. Java, Python, etc., admiten esta función. - 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.
Objeto perfLoggingPrefs
El diccionario perfLoggingPrefs
tiene el siguiente formato. Todas las claves son opcionales:
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.