Usando Capabilities y ChromeOptions para ChromeDriver

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 ChromeOptionsobjeto 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-dirinterruptor 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.

NombreTipoValor por defectoDescripció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.
binarystring  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’)
extensionslista 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)
localStatediccionario 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.
prefsdiccionario 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.
detachboleanofalse 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.
debuggerAddressstring 
Una dirección de un servidor de depuración de Chrome para conectarse, en forma de , por ejemplo, ‘127.0.0.1:38947’
excludeSwitcheslista 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).
mobileEmulationdiccionario 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 , incluya «webview» en esta lista.

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

Compartir artículo

Leave Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.