En el presente articulo vamos a aprender a utilizar y manejar las capabilities y chrome options que son muy útiles cuando usamos Chrome como navegador web para nuestras pruebas automatizadas (ChromeDriver).
Las capabilities son opciones que puede usar para personalizar y configurar una sesión de ChromeDriver. Vamos a ver todas las capabilities compatibles de ChromeDriver y cómo usarlas.
Las API de idiomas de WebDriver (Java, C#, Python, etc) proporcionan formas de pasar capabilities 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
. Esto es compatible con Java, Python, etc. - Usa la clase
DesiredCapabilities
. Esto es compatible con Python, Ruby, etc. Si bien también está disponible en Java, su uso en Java está en desuso.
Usando la clase ChromeOptions
Puede crear una instancia de ChromeOptions
, que tiene métodos convenientes para configurar las capacidades específicas de ChromeDriver. Luego puede pasar el ChromeOptions
objeto al constructor ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
Desde Selenium versión 3.6.0, la clase ChromeOptions
en Java también implementa la interfaz Capabilities
, lo que le permite especificar otras capabilities de WebDriver no específicas de ChromeDriver.
ChromeOptions options = new ChromeOptions();
// Agrega la capability proxy al webdriver.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);
//Agrega una capability especifica de ChromeDriver.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
Casos de uso común de ChromeOptions
Usar perfil personalizado de Chrome (también llamado directorio de datos de usuario)
De forma predeterminada, ChromeDriver creará un nuevo perfil temporal para cada sesión. A veces es posible que desee establecer preferencias especiales o simplemente usar un perfil personalizado por completo. Si es lo primero, puede usar la capacidad ‘chrome.prefs’ (que se describe más adelante) para especificar las preferencias que se aplicarán después de que se inicie Chrome. Si es lo último, puede usar el user-data-dir
interruptor de línea de comandos de Chrome para indicarle a Chrome qué perfil usar:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
Puede crear su propio perfil personalizado simplemente ejecutando Chrome (en la línea de comandos o a través de ChromeDriver) con el user-data-dir
interruptor configurado en algún directorio nuevo. Si la ruta no existe, Chrome creará un nuevo perfil en la ubicación especificada. A continuación, puede modificar la configuración del perfil como desee, y ChromeDriver puede usar el perfil en el futuro. Abra la chrome://version en el navegador para ver qué perfil usa 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");
Establecer una preferencia de Chrome
ChromeOptions options = new ChromeOptions(); Map<String, Object>
prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0); options.setExperimentalOption("prefs", prefs);
A continuación se muestra la lista de argumentos disponibles y más utilizados para la clase ChromeOptions
- start-maximized: Abre Chrome en modo maximizado
- incognito: Abre Chrome en modo incógnito
- headless: Abre Chrome en modo «headless»
- disable-extensions: Deshabilita las extensiones existentes en el navegador Chrome
- disable-popup-blocking: Deshabilita las ventanas emergentes que se muestran en el navegador Chrome
- make-default-browser: Hace que Chrome sea el navegador predeterminado
- version: Imprime la versión del navegador Chrome
- disable-infobars: Evita que Chrome muestre la notificación ‘Chrome está siendo controlado por un software automatizado
Lista de capabilities reconocidas para ChromeOptions
Esta es una lista de todas las capabilities deseadas específicas de Chrome, que están todas bajo el diccionario chromeOptions
. Si es posible, use la clase ChromeOptions
en lugar de especificarlos directamente.
Nombre | Tipo | Valor por defecto | Descripción |
---|---|---|---|
args | lista de strings | Lista de argumentos de la línea de comandos para usar al iniciar Chrome. Los argumentos con un valor asociado deben estar separados por un signo ‘=’ (por ejemplo, [‘start-maximized’, ‘user-data-dir=/tmp/temp_profile’]). Vea aquí una lista de argumentos de Chrome. | |
binary | string | Ruta del archivo ejecutable de Chrome a utilizar (en Mac OS X, este debería ser el binario real, no solo la aplicación, por ejemplo, ‘/Applications/Google Chrome.app/Contents/MacOS/Google Chrome’) | |
extensions | lista de strings | Una lista de extensiones de Chrome para instalar al inicio. Cada elemento de la lista debe ser una extensión de Chrome empaquetada codificada en base 64 (.crx) | |
localState | diccionario | Un diccionario con cada entrada que 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 con cada entrada que consiste en el nombre de la preferencia y su valor. Estas preferencias solo se aplican al perfil de usuario en uso. Consulte el archivo ‘Preferencias’ en el directorio de datos de usuario de Chrome para ver ejemplos. | |
detach | boleano | false | Si es falso, Chrome se cerrará cuando ChromeDriver se cierre, independientemente de si se cierra la sesión. Si es cierto, Chrome solo se cerrará si la sesión se cierra (o se cierra). Tenga en cuenta que si es verdadero y la sesión no se cierra, ChromeDriver no puede limpiar el directorio temporal de datos de usuario que está utilizando la instancia de Chrome en ejecución. |
debuggerAddress | string | Una dirección de un servidor de depuración de Chrome para conectarse, en forma de | |
excludeSwitches | lista de strings | La lista de interruptores de línea de comandos de Chrome excluye que ChromeDriver pase de manera predeterminada al iniciar Chrome. No prefije interruptores con -. | |
minidumpPath | string | Directorio para almacenar minivolcados de Chrome. (Solo se admite en Linux). | |
mobileEmulation | diccionario | Un diccionario con un valor para «deviceName» o valores para «deviceMetrics» y «userAgent». Consulte Mobile Emulation para obtener más información. | |
windowTypes | lista de strings | Una lista de tipos de ventanas que aparecerán en la lista de identificadores de ventanas. Para acceder a los elementos |
Lista de interruptores de línea de comandos de Chrome
Hay muchas líneas de comando que se pueden usar con el navegador Google Chrome. Algunos cambian el comportamiento de las características, otros son para depurar o experimentar. Esta página enumera los interruptores disponibles, incluidas sus condiciones y descripciones. La última actualización automática se produjo el 12/08/2019 .
Recuerda seguir visitando nuestros artículos sobre pruebas automatizadas en los que podrás aprender mucho!
Selenium WebDriver