Opciones de Chrome y capacidades deseadas en Selenium Webdriver

¿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 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 Descripción
ACEPTAR_SSL_CERTS Esta propiedad le dice al navegador que acepte certificados SSL de forma predeterminada.
PLATAFORMA_NOMBRE Esta propiedad se utiliza para configurar 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.
VERSIÓN 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 utilizando las opciones de ChromeDriver y la clase de capacidades deseadas. A continuación se detallan los pasos para acceder a la extensión AdBlocker en el navegador Chrome utilizando la clase Desired Capabilities.

Paso 1) La extensión AdBlocker debe instalarse en el navegador Chrome antes de usar la clase de Opciones de Chrome

Paso 2) Extraiga el archivo CRX correspondiente a la extensión AdBlocker 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 el objeto Selenium

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);

Extraer archivo CRX

Los pasos a continuación demuestran el proceso de extracción del archivo CRX a través del bloqueador de anuncios a través del sitio web: http://crxextractor.com/

Paso 1) Ve a http://crxextractor.com/ y haga clic en el botón de inicio

Extraer archivo CRX

Paso 2) Ingrese la extensión de Chrome – URL del bloqueador de anuncios debajo del textobox. La URL de Adblock en Chrome Web Store es https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

y haga clic en Aceptar

Extraer archivo 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

Extraer archivo 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.

Código de muestra:

  1. Verás anuncios en http://demo.guru99.com/ como a continuación

Extraer archivo CRX

  1. Con la extensión AdBlocker habilitada en el navegador Chrome, los anuncios deben estar deshabilitados
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("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Explicación del código:

  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, debe crear un objeto de capacidades deseadas de Chrome en la clase Selenium y pasarlo a la instancia del controlador web. Desde la versión Selenium 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 Chrome.
  4. Abra la URL – http://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 Extensión de AdBlocker 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. CRX File 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 la extensión AdBlocker habilitada como se muestra a continuación sin ningún anuncio.

Extraer archivo CRX

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.

Código de muestra:

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("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Explicación del código:

  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, necesitamos pasar la URL – http://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 Headless se ejecuta en segundo plano. No verá la GUI del navegador ni las operaciones realizadas 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("http://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Explicación del código:

  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 el objeto Chrome Options Selenium como argumento
  5. Finalmente, necesitamos pasar la URL – http://demo.guru99.com/ al método driver.get
  6. Imprime el título de la página y cierra el navegador.

Salida

El navegador no será visible para el código anterior ya que Chrome funcionará en modo sin cabeza. El título de la página se recuperará y se mostrará como se muestra a continuación.

Opciones de Chrome para Chrome sin cabeza

Resumen

  • La clase Selenium Chrome Options se utiliza para manipular varias propiedades del controlador Chrome.
  • La clase Desired Chrome Capabilities proporciona un conjunto de pares clave-valor para modificar propiedades individuales del controlador web, como el nombre del navegador, la plataforma del navegador, etc.
  • Para manipular cualquier extensión del navegador Chrome, se debe extraer el archivo CRX correspondiente a la extensión y agregarlo a la clase Opciones de Chrome.
  • –incognito y –headless son argumentos predefinidos proporcionados por la clase de Opciones de Chrome para usar el navegador Chrome en modo incógnito y modo sin cabeza.