Opciones de Chrome y capacidades deseadas en Selenium

โšก Resumen inteligente

Opciones de Chrome y capacidades deseadas en Selenium WebDriver controla cรณmo se inicia y se comporta el navegador Chrome durante las pruebas automatizadas. Juntos configuran los argumentos, las extensiones, el manejo de SSL y la configuraciรณn entre navegadores, lo que hace que las ejecuciones de pruebas sean flexibles, repetibles y estรฉn listas para Selenium Ejecuciรณn en cuadrรญcula.

  • ๐ŸŒ ChromeOptions: Personaliza las sesiones con argumentos como start-maximized, incognito y headless.
  • โš™๏ธ Capacidades deseadas: Configura el nombre del navegador, la plataforma, la versiรณn y la aceptaciรณn del certificado SSL.
  • ๐Ÿงฉ Extensiones: Cargar un archivo CRX mediante automatizaciรณn en lugar de instalarlo manualmente.
  • ๐Ÿ‡ง๐Ÿ‡ท De incรณgnito y sin cabeza: El cรณdigo reutilizable ejecuta sesiones privadas o en segundo plano para los pipelines de CI.
  • ๐Ÿ–ฅ๏ธ Selenium Cuadrรญcula: Estas capacidades permiten la ejecuciรณn de pruebas distribuidas en diferentes navegadores.
  • โš ๏ธ Selenium Nota 4: DesiredCapabilities estรก obsoleto; pase ChromeOptions directamente al controlador.

Opciones de Chrome y capacidades deseadas en Selenium Controlador web

ยฟQuรฉ es la clase de opciones de Chrome?

El Clase de opciones de Chrome es un concepto en Selenium WebDriver para manipular varias propiedades del controlador de Chrome. La clase de opciones de Chrome generalmente se usa junto con las capacidades deseadas para personalizar las sesiones del controlador de Chrome. Le ayuda a realizar varias operaciones como abrir Chrome en modo maximizado, deshabilitar extensiones existentes, deshabilitar ventanas emergentes, etc.

Ejemplo:

El siguiente ejemplo muestra una forma de abrir el navegador Chrome en modo maximizado usando la clase ChromeOptions. Necesitamos pasar una instancia de la clase ChromeOptions para la inicializaciรณn del controlador web.

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

A continuaciรณn se muestra la lista de argumentos disponibles y mรกs utilizados para la clase ChromeOptions.

  • inicio maximizado: Abre Chrome en modo maximizar
  • incรณgnito: Abre Chrome en modo incรณgnito
  • sin cabeza: Abre Chrome en modo sin cabeza
  • deshabilitar extensiones: Desactiva las extensiones existentes en el navegador Chrome
  • desactivar-bloqueo-de-ventanas emergentes: Desactiva las ventanas emergentes que se muestran en el navegador Chrome
  • navegador predeterminado: Hace que Chrome sea el navegador predeterminado
  • versiรณn: Imprime la versiรณn del navegador Chrome.
  • desactivar barras de informaciรณn: Evita que Chrome muestre la notificaciรณn "Chrome estรก siendo controlado por software automatizado".

Clase de capacidades deseadas

Clase de capacidades deseadas se utiliza para modificar mรบltiples propiedades de los controladores web. Proporciona pares clave-valor para cambiar propiedades individuales de los controladores web, como el nombre del navegador, la plataforma del navegador, etc. Un mรฉtodo comรบn de la clase Desired Capabilities es el mรฉtodo setCapability. Se utiliza principalmente con Selenium Grid, donde el mismo caso de prueba debe ejecutarse en diferentes navegadores.

Ejemplo:

El siguiente ejemplo muestra la forma de permitir que el navegador Chrome acepte certificados SSL en sitios web de forma predeterminada utilizando la clase Desired Capabilities for Chrome.

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability โ€“ ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

A continuaciรณn se muestran los tipos de capacidades predefinidas mรกs utilizados.

Nombre de la capacidad Mareas Ideales para Lecciones
ACEPTAR_SSL_CERTS Esta propiedad le dice al navegador que acepte certificados SSL de forma predeterminada.
PLATAFORMA_NOMBRE Esta propiedad se utiliza para establecer la plataforma del sistema operativo utilizada para acceder al sitio web.
NAVEGADOR_NOMBRE Esta propiedad se utiliza para establecer el nombre del navegador para una instancia de controlador web.
VERSION Esta propiedad se utiliza para configurar la versiรณn del navegador.

Opciones de Chrome para la extensiรณn Adblocker

La extensiรณn Adblocker del navegador Chrome se puede manejar mediante la clase ChromeDriver Options y Desired Capabilities. A continuaciรณn se muestran los pasos para acceder a ella. AdBlocker extensiรณn en el navegador Chrome usando la clase Desired Capabilities.

Paso 1) AdBlockLa extensiรณn er debe instalarse en el navegador Chrome antes de usar la clase de Opciones de Chrome.

Paso 2) Extract el archivo CRX correspondiente a AdBlockExtensiรณn er a travรฉs de http://crxextractor.com/

Paso 3) Pase la ruta del archivo CRX descargado a la clase de Opciones de Chrome

Paso 4) Cree una instancia del controlador web utilizando la clase de capacidades deseada y las opciones de Chrome en Selenium objeto

Ejemplo:

El siguiente ejemplo demuestra cรณmo activar la extensiรณn del bloqueador de anuncios en el navegador Chrome usando las Opciones de Chrome y la clase Capacidades deseadas.

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

ExtracArchivo CRX

Los pasos que se muestran a continuaciรณn demuestran el proceso de extracArchivo CRX bloqueador de anuncios a travรฉs del sitio web โ€“ http://crxextractor.com/

Paso 1) Vaya al http://crxextractor.com/ y haga clic en el botรณn de inicio

ExtracArchivo CRX

Paso 2) Introduce la extensiรณn de Chrome: Ad Blocker URL debajo del cuadro de texto. URL para Adblock en la tienda web de Chrome es https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

y haga clic en Aceptar

ExtracArchivo CRX

Paso 3) Al hacer clic en el botรณn Aceptar, la etiqueta del botรณn cambiarรก a Obtener .CRX como se muestra a continuaciรณn. Haga clic en el botรณn Obtener .CRX, se descargarรก el archivo CRX correspondiente a la extensiรณn

ExtracArchivo CRX

Paso 4) Guarde el archivo en la mรกquina local y anote la ruta guardada. El siguiente paso es pasar la ruta guardada a la clase Opciones de Chrome.

Muestra Code:

  1. Verรกs anuncios en https://demo.guru99.com/ como a continuaciรณn

ExtracArchivo CRX

  1. Con AdBlockLa extensiรณn er habilitada en los anuncios del navegador Chrome debe estar deshabilitada
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code Explicaciรณn:

  1. Inicialmente, debe establecer la ruta al archivo chromedriver.exe utilizando el mรฉtodo de configuraciรณn de propiedades, ya que estรก utilizando el navegador Chrome para realizar pruebas.
  2. Debe establecer la ruta al archivo CRX para agregar el mรฉtodo de extensiones
  3. Luego necesitas crear un objeto de Capacidades deseadas de Chrome en Selenium class y pรกselo a la instancia del controlador web. De Selenium Versiรณn 3.8.1, la clase de capacidades del controlador estรก en desuso y es necesario fusionar el objeto de capacidades con el objeto de Opciones de Chrome antes de pasar lo mismo como argumento al constructor del controlador de Chrome.
  4. Abra el panel de URL โ€“ https://demo.guru99.com/test/simple_context_menu.html con la extensiรณn Bloqueador de anuncios habilitada
  5. Maximizar y cerrar el navegador.

NOTA: estamos habilitando AdBlockextensiรณn en el navegador Chrome a travรฉs de un script de automatizaciรณn en lugar de habilitar manualmente la extensiรณn Adblocker en el navegador Chrome. El archivo CRX es una forma de acceder a la extensiรณn del bloqueador de anuncios mediante un script de automatizaciรณn

Salida:

El navegador Chrome se habilitarรก con AdBlocker extensiรณn habilitada como se muestra a continuaciรณn sin ningรบn anuncio

ExtracArchivo CRX

Ademรกs de cargar extensiones, ChromeOptions tambiรฉn controla cรณmo se ejecuta la propia ventana del navegador.

Opciones de Chrome para el modo incรณgnito

Las opciones de Chrome se pueden utilizar para el modo incรณgnito utilizando el argumento predefinido:incรณgnito.

A continuaciรณn se muestra el cรณdigo de muestra para lograr lo mismo.

Muestra Code:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code Explicaciรณn:

  1. Inicialmente, debe establecer la ruta al archivo chromedriver.exe utilizando el mรฉtodo de configuraciรณn de propiedades, ya que estรก utilizando el navegador Chrome para realizar pruebas.
  2. Luego debe crear un objeto de la clase Opciones de Chrome y pasarlo a la instancia del controlador web. Como queremos abrir el navegador Chrome en modo incรณgnito, debe pasar el argumento โ€“incognito a la clase Opciones de Chrome.
  3. A continuaciรณn, cree un objeto de la clase Desired Capabilities y combine el objeto de la clase Desired Capabilities con el objeto de la clase Chrome Options utilizando el mรฉtodo de fusiรณn.
  4. Debe crear un objeto de la clase Chrome Driver y pasar el objeto Opciones de Chrome como argumento.
  5. Finalmente, debemos aprobar el URL โ€“ https://demo.guru99.com/test/simple_context_menu.html al mรฉtodo driver.get
  6. Maximizar y cerrar el navegador.

Salida:

La ventana del navegador Chrome se abrirรก en modo incรณgnito como se muestra a continuaciรณn.

Opciones de Chrome para el modo incรณgnito

Opciones de Chrome para Chrome sin cabeza

Un navegador sin interfaz grรกfica se ejecuta en segundo plano. No verรก la interfaz grรกfica del navegador ni las operaciones que se realizan en รฉl.

Las opciones de Chrome para ejecutar el navegador Chrome en modo sin cabeza se pueden lograr utilizando los argumentos predefinidos:sin cabeza.

El cรณdigo de muestra para lograrlo se menciona a continuaciรณn.

Ejemplo:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code Explicaciรณn:

  1. Inicialmente, debe establecer la ruta al archivo chromedriver.exe utilizando el mรฉtodo de configuraciรณn de propiedades, ya que estรก utilizando el navegador Chrome para realizar pruebas.
  2. A continuaciรณn, cree un objeto de la clase Opciones de Chrome y pรกselo a la instancia del controlador web. Como queremos abrir el navegador Chrome en modo sin cabeza, debemos pasar el argumento โ€“sin cabeza a la clase Opciones de Chrome.
  3. Cree un objeto de la clase DesiredCapabilities Chrome y combine el objeto de la clase Desired Capabilities con el objeto de la clase Chrome Options usando el mรฉtodo de combinaciรณn
  4. Cree un objeto de la clase Chrome Driver y pase las Opciones de Chrome Selenium objeto como argumento
  5. Finalmente, debemos aprobar el URL โ€“ https://demo.guru99.com/ al mรฉtodo driver.get
  6. Imprime el tรญtulo de la pรกgina y cierra el navegador.

Resultado

El navegador no serรก visible para el cรณdigo anterior, ya que Chrome funcionarรก en modo sin interfaz grรกfica. Se obtendrรก el tรญtulo de la pรกgina y se mostrarรก como se muestra a continuaciรณn.

Opciones de Chrome para Chrome sin cabeza

Preguntas Frecuentes

Sรญ. Selenium 4 DesiredCapabilities obsoletos en favor de clases de opciones del navegador como ChromeOptions. En Selenium 3 los fusionaste; en Selenium 4. Pasas ChromeOptions directamente al controlador.

Llama a addArguments con varias opciones, por ejemplo, options.addArguments con start-maximized e incognito. Tambiรฉn puedes encadenar varias llamadas. Cada argumento personaliza cรณmo se inicia la sesiรณn de Chrome.

addArguments pasa parรกmetros de lรญnea de comandos como headless o incognito a Chrome. addExtensions carga un archivo de extensiรณn .crx empaquetado en la sesiรณn. Ambos personalizan el comportamiento, pero cumplen funciones diferentes.

Sรญ. Los asistentes de IA como Copilot generan configuraciones de ChromeOptions y capacidades, sugieren nombres de argumentos y explican las API obsoletas. Siempre revise la salida, porque los nombres de las banderas y Selenium Las versiones cambian con frecuencia.

Las herramientas de autorreparaciรณn de IA actualizan automรกticamente los argumentos, detectan indicadores inestables y sugieren reemplazos estables tras las actualizaciones de Chrome. Reducen el mantenimiento de las ejecuciones sin interfaz grรกfica y las discrepancias de capacidades entre entornos de integraciรณn continua.

Sรญ. ChromeOptions funciona con RemoteWebDriver para la ejecuciรณn en Grid. Se adjuntan las opciones a la sesiรณn remota, lo que permite que la misma configuraciรณn se ejecute en mรกquinas y navegadores distribuidos.

Esto generalmente significa que las versiones de ChromeDriver y del navegador Chrome no coinciden. Instale un ChromeDriver compatible o utilice Selenium Gerente en Selenium 4 para resolver el controlador automรกticamente.

Utilice una opciรณn experimental: un mapa de preferencias con download.default_directory pasado a travรฉs de setExperimentalOption. Chrome guardarรก automรกticamente los archivos en esa carpeta durante las pruebas automatizadas.

Resumir este post con: