Opções do Chrome e recursos desejados no Selenium Webdriver

O que é a classe de opções do Chrome?

A Classe de opções do Chrome é um conceito no Selenium WebDriver para manipular várias propriedades do driver do Chrome. A classe de opções do Chrome geralmente é usada em conjunto com Desired Capabilities para personalizar sessões de driver do Chrome. Ajuda você a realizar várias operações, como abrir o Chrome no modo maximizado, desativar extensões existentes, desativar pop-ups, etc.

Exemplo:

O exemplo abaixo mostra uma maneira de abrir o navegador Chrome no modo maximizado usando a classe ChromeOptions. Precisamos passar uma instância da classe ChromeOptions para a inicialização do driver web.

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

Abaixo está a lista de argumentos disponíveis e mais comumente usados ​​para a classe ChromeOptions

  • início maximizado: abre o Chrome no modo maximizar
  • incógnito: Abre o Chrome no modo de navegação anônima
  • sem cabeça: Abre o Chrome no modo sem cabeça
  • desabilitar extensões: desativa extensões existentes no navegador Chrome
  • desativar bloqueio de pop-up: desativa pop-ups exibidos no navegador Chrome
  • navegador make-default: Torna o navegador padrão do Chrome
  • versão: Imprime a versão do navegador Chrome
  • desabilitar barras de informações: Impede que o Chrome exiba a notificação 'O Chrome está sendo controlado por software automatizado

Classe de capacidades desejadas

Classe de Capacidades Desejadas é usado para modificar várias propriedades de drivers da web. Ele fornece pares de valores-chave para alterar propriedades individuais de drivers da web, como nome do navegador, plataforma do navegador, etc. Um método comum da classe Desired Capabilities é o método setCapability. É usado principalmente com Selenium Grid, onde o mesmo caso de teste precisa ser executado em navegadores diferentes.

Exemplo:

O exemplo abaixo mostra como permitir que o navegador Chrome aceite certificados SSL em sites por padrão usando a classe 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);

Abaixo estão os tipos de recursos predefinidos mais comumente usados.

Nome da capacidade Descrição
ACCEPT_SSL_CERTS Esta propriedade informa ao navegador para aceitar certificados SSL por padrão
PLATFORM_NAME Esta propriedade é usada para definir a plataforma do sistema operacional usada para acessar o site
BROWSER_NAME Esta propriedade é usada para definir o nome do navegador para uma instância do driver da web
VERSÃO Esta propriedade é usada para definir a versão do navegador

Opções do Chrome para extensão Adblocker

A extensão Adblocker do navegador Chrome pode ser tratada usando as opções ChromeDriver e a classe Desired Capabilities. Abaixo estão as etapas para acessar a extensão AdBlocker no navegador Chrome usando a classe Desired Capabilities.

Passo 1) A extensão AdBlocker deve ser instalada no navegador Chrome antes de usar a classe Opções do Chrome

Passo 2) Extraia o arquivo CRX correspondente à extensão AdBlocker através de http://crxextractor.com/

Passo 3) Passe o caminho do arquivo CRX baixado para a classe Opções do Chrome

Passo 4) Instancie o driver da web usando a classe de recursos desejada e as opções do Chrome no objeto Selenium

Exemplo:

O exemplo abaixo demonstra como ativar a extensão do bloqueador de anúncios no navegador Chrome usando as classes Chrome Options e Desired Capabilities.

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

Extrair arquivo CRX

As etapas abaixo demonstram o processo de extração do arquivo CRX por meio do Ad Blocker através do site – http://crxextractor.com/

Passo 1) Acesse http://crxextractor.com/ e clique no botão Iniciar

Extrair arquivo CRX

Passo 2) Insira a extensão do Chrome – URL do bloqueador de anúncios abaixo do textobox. O URL do Adblock na loja virtual do Chrome é https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

e clique ok

Extrair arquivo CRX

Passo 3) Ao clicar no botão OK, o rótulo do botão mudará para Obter .CRX conforme abaixo. Clique no botão Obter .CRX, o arquivo CRX correspondente à extensão será baixado

Extrair arquivo CRX

Passo 4) Salve o arquivo na máquina local e anote o caminho salvo. A próxima etapa é passar o caminho salvo para a classe Opções do Chrome

Código de amostra:

  1. Você verá anúncios em http://demo.guru99.com/ como abaixo

Extrair arquivo CRX

  1. Com a extensão AdBlocker ativada no navegador Chrome, os anúncios devem ser desativados
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();
	}
	
}

Explicação do código:

  1. Inicialmente, você precisa definir o caminho para o arquivo chromedriver.exe usando o método set property, já que está usando o navegador Chrome para teste
  2. Você precisa definir o caminho para o arquivo CRX para adicionar o método de extensões
  3. Então você precisa criar um objeto de Chrome Desired Capabilities na classe Selenium e passá-lo para a instância do driver da web. A partir da versão Selenium 3.8.1, a classe de recursos do driver está obsoleta e você precisa mesclar o objeto de recursos com o objeto Opções do Chrome antes de passar o mesmo como um argumento para o construtor do driver do Chrome
  4. Abra o URL – http://demo.guru99.com/test/simple_context_menu.html com extensão Ad Blocker ativada
  5. Maximize e feche o navegador

NOTA: Estamos habilitando Extensão AdBlocker no navegador Chrome por meio de script de automação em vez de ativar manualmente a extensão Adblocker no navegador Chrome. Arquivo CRX é uma maneira de acessar a extensão do bloqueador de anúncios usando script de automação

Saída:

O navegador Chrome será habilitado com a extensão AdBlocker habilitada conforme abaixo, sem nenhum anúncio

Extrair arquivo CRX

Opções do Chrome para modo de navegação anônima

As opções do Chrome podem ser usadas para o modo de navegação anônima usando o argumento predefinido –incógnito.

Abaixo está o código de exemplo para fazer o mesmo.

Código de amostra:

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

Explicação do código:

  1. Inicialmente, você precisa definir o caminho para o arquivo chromedriver.exe usando o método set property, já que está usando o navegador Chrome para teste
  2. Então você precisa criar um objeto da classe Chrome Options e passá-lo para a instância do driver da web. Como queremos abrir o navegador Chrome no modo de navegação anônima, você precisa passar o argumento –incógnito para a classe Opções do Chrome.
  3. Em seguida, crie um objeto da classe Desired Capabilities e mescle o objeto da classe Desired Capabilities com o objeto da classe Chrome Options usando o método merge
  4. Você precisa criar um objeto da classe Chrome Driver e passar o objeto Chrome Options como argumento
  5. Finalmente, precisamos passar a URL – http://demo.guru99.com/test/simple_context_menu.html para o método driver.get
  6. Maximize e feche o navegador

Saída:

A janela do navegador Chrome será aberta no modo de navegação anônima conforme abaixo

Opções do Chrome para modo de navegação anônima

Opções do Chrome para Chrome sem cabeça

Um navegador Headless é executado em segundo plano. Você não verá a GUI do navegador ou as operações realizadas nele.

As opções do Chrome para executar o navegador Chrome no modo headless podem ser realizadas usando os argumentos predefinidos –sem cabeça.

O código de exemplo para fazer isso é mencionado abaixo.

Exemplo:

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


}

Explicação do código:

  1. Inicialmente, você precisa definir o caminho para o arquivo chromedriver.exe usando o método set property, já que está usando o navegador Chrome para teste
  2. Em seguida, crie um objeto da classe Chrome Options e passe-o para a instância do driver da web. Como queremos abrir o navegador Chrome no modo headless, precisamos passar o argumento –headless para a classe Chrome Options.
  3. Crie um objeto da classe DesiredCapabilities do Chrome e mescle o objeto da classe Desired Capabilities com o objeto da classe Chrome Options usando o método merge
  4. Crie um objeto da classe Chrome Driver e passe o objeto Chrome Options Selenium como argumento
  5. Finalmente, precisamos passar a URL – http://demo.guru99.com/ para o método driver.get
  6. Imprima o título da página e feche o navegador

saída

O navegador não estará visível para o código acima, pois o Chrome funcionará no modo Headless. O título da página será obtido e exibido conforme abaixo.

Opções do Chrome para Chrome sem cabeça

Resumo

  • A classe Selenium Chrome Options é usada para manipular várias propriedades do driver do Chrome
  • A classe Desired Chrome Capabilities fornece um conjunto de pares de valores-chave para modificar propriedades individuais do driver da web, como nome do navegador, plataforma do navegador, etc.
  • Para manipular qualquer extensão do navegador Chrome, o arquivo CRX correspondente à extensão deve ser extraído e adicionado à classe Opções do Chrome
  • –incognito e –headless são argumentos predefinidos fornecidos pela classe Chrome Options para usar o navegador Chrome no modo de navegação anônima e no modo headless