Opções do Chrome e recursos desejados em Selenium Driver da Web
O que é a classe de opções do Chrome?
A Classe de opções do Chrome é um conceito em 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 manipulada usando as opções do ChromeDriver e a classe Desired Capabilities. Abaixo estão as etapas para acessar AdBlocker no navegador Chrome usando a classe Desired Capabilities.
Passo 1) AdBlockA extensão er deve ser instalada no navegador Chrome antes de usar a classe Opções do Chrome
Passo 2) Extraia o arquivo CRX correspondente a AdBlockextensão 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 em Selenium objeto
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
Passo 2) Insira a extensão do Chrome – URL do bloqueador de anúncios na caixa de texto. 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
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
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:
- Você verá anúncios em
http://demo.guru99.com/
como abaixo
- Com AdBlockA extensão ativada em anúncios do navegador Chrome deve ser desativada
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:
- 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
- Você precisa definir o caminho para o arquivo CRX para adicionar o método de extensões
- Então você precisa criar um objeto de recursos desejados do Chrome em Selenium class e passá-lo para a instância do driver da web. De Selenium Versão 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
- Abra o URL –
http://demo.guru99.com/test/simple_context_menu.html
com extensão Ad Blocker ativada - Maximize e feche o navegador
OBSERVAÇÃO: Estamos habilitando AdBlocksua extensão 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á ativado com AdBlockextensão ativada conforme abaixo, sem nenhum anúncio
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:
- 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
- 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.
- 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
- Você precisa criar um objeto da classe Chrome Driver e passar o objeto Chrome Options como argumento
- Finalmente, precisamos passar a URL –
http://demo.guru99.com/test/simple_context_menu.html
para o método driver.get - 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 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:
- 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
- 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.
- 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
- Crie um objeto da classe Chrome Driver e passe as opções do Chrome Selenium objeto como argumento
- Finalmente, precisamos passar a URL –
http://demo.guru99.com/
para o método driver.get - 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.
Resumo
- Selenium A classe 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