Capacidades desejadas em Selenium webdriver
O que são capacidades desejadas?
Capacidades Desejadas é uma classe em Selenium usado para definir propriedades de navegadores para realizar testes entre navegadores de aplicativos da web. Ele armazena os recursos como pares de valores-chave e esses recursos são usados para definir propriedades do navegador, como nome do navegador, versão do navegador, caminho do driver do navegador no sistema, etc., para determinar o comportamento do navegador em tempo de execução.
- A capacidade desejada também pode ser usada para configurar a instância do driver do Selenium WebDriver.
- Podemos configurar a instância do driver como FirefoxDriver, ChromeDriver, InternetExplorerDriver usando os recursos desejados.
Por que precisamos das capacidades desejadas?
Capacidades Desejadas são necessários porque cada Ensaios cenário deve ser executado em algum ambiente de teste específico. O ambiente de teste pode ser um navegador da web, Mobile dispositivo, emulador móvel, simulador móvel, etc. A classe Desired Capabilities nos ajuda a informar ao webdriver qual ambiente usaremos em nosso script de teste.
O Método setCapability da classe DesiredCapabilities, que é explicada na parte posterior do tutorial, pode ser usada em Selenium Grade. É usado para realizar uma execução paralela em diferentes configurações de máquina.
Ex: Grade
É usado para definir as propriedades do navegador (Ex. Chrome, IE), Nome da Plataforma (Ex. Linux, Windows) que são usados durante a execução dos casos de teste.
No caso da automação móvel, como realizamos os testes em diferentes variedades de dispositivos móveis, a Plataforma Móvel (ex. iOS, Android) Versão da plataforma (Ex. 3.x,4.x em Android) Pode ser configurado.
O exemplo do emulador acima mostra o conjunto de plataforma que é Android e o conjunto de versão da plataforma que é IceCream Sandwich (4.x).
Os recursos desejados são mais úteis em casos como:
- Na automação de aplicativos móveis, onde as propriedades do navegador e do dispositivo podem ser definidas.
- In Selenium grid quando queremos executar os casos de teste em um navegador diferente com diferentes sistemas operacionais e versões.
Tipos de métodos de capacidades desejadas
Aqui veremos um tipo diferente de métodos de capacidades desejadas e como usar um desses métodos “método setCapability”.
#1) getBrowserName()
public java.lang.String getBrowserName()
#2) setBrowserName()
public void setBrowserName(java.lang.String browserName)
#3) getVersão()
public java.lang.String getVersion()
#4) setVersão()
public void setVersion(java.lang.String version)
#5) getPlataforma()
public Platform getPlatform()
#6)setPlataforma()
public Platform setPlatform()
#7) Método getCapability()
O método getCapability() da classe DesiredCapabilities pode ser usado para obter o recurso que está em uso atualmente no sistema.
public java.lang.Object getCapability(java.lang.String capabilityName)
# 8) Método setCapability()
O Método setCapability() da classe Desired Capabilities é usada para definir a propriedade de um ambiente de teste, como nome do dispositivo, nome e versão do sistema operacional, nome e versão do navegador, caminho absoluto do aplicativo em teste (o arquivo .apk do Android aplicativo em teste), atividade do aplicativo (em Android) e appPackage(em Java).
“Método setCapability” in Java tem as declarações abaixo:
setCapability : public void setCapability(java.lang.String capabilityName,boolean value)
setCapability :public void setCapability(java.lang.String capabilityName,java.lang.String value)
setCapability :public void setCapability(java.lang.String capabilityName,Platform value)
setCapability :public void setCapability(java.lang.String key,java.lang.Object value)
Definir capacidade em Selenium Exemplo
Vamos considerar um exemplo onde queremos executar nosso Caso de teste no navegador Internet Explorer para abrir o site www.gmail.com usando Selenium Driver da Web.
A seguir está o código.
import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; public class IEtestforDesiredCapabilities { public static void main(String[] args) { WebDriver driver = new InternetExplorerDriver(); driver.manage().window().maximize(); driver.get("http://gmail.com"); driver.quit(); } }
Agora execute este código de Eclipse e confira o console.
Saída:
Irá gerar o seguinte erro quando o código acima for executado. O erro ocorre porque o caminho para o driver do navegador (IE no caso acima) não está definido. O navegador não pôde ser localizado pelo código Selenium.
The path to the driver executable must be set by the webdriver.ie.driver system property; formore information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://code.google.com/p/selenium/downloads/list Dec 11, 201212:59:43PM org.openqa.selenium.ie.InternetExplorerDriverServer initializeLib WARNING: This method of starting the IE driver is deprecated and will be removed in selenium 2.26. Please download the IEDriverServer.exe from http://code.google.com/p/selenium/downloads/list and ensure that it is in your PATH.
Solução:
A solução para o problema acima é fornecida na seção de aviso do próprio erro.
- Baixe o servidor autônomo Internet ExplorerDriver para 32 ou 64 bits.
- Salve o driver em um local adequado no sistema.
- Defina o caminho para o driver usando o Propriedade System.set método.
- É usado para definir o driver do IE com a propriedade webdriver. Ajuda a localizar o arquivo executável do driver armazenado no local do sistema. (Ex:”C:\IEDriverLocation\IEDriver.exe”)
import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; public class IEtestforDesiredCapabilities { public static void main(String[] args) { //it is used to define IE capability DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE"); capabilities.setCapability(InternetExplorerDriver. INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe"); //it is used to initialize the IE driver WebDriver driver = new InternetExplorerDriver(capabilities); driver.manage().window().maximize(); driver.get("http://gmail.com"); driver.quit(); } }
Explicação do código:
No código acima,
- As instruções de importação servem para importar os pacotes necessários para o driver da web Selenium, pacotes necessários para o driver do Internet Explorer, pacotes para os recursos desejados.
- setCapability utiliza vários recursos como variáveis de entrada que são então usadas pelo driver da web para iniciar o aplicativo no ambiente desejado.
- setProperty é usado para definir o caminho onde o driver está localizado. O Web Driver localiza o driver necessário.
- O site do Gmail é aberto no navegador Internet Explorer usando o método “get”.
Saída:
O caso de teste no navegador Internet Explorer será executado com sucesso usando Selenium Driver da Web.
Conclusão
A classe Desired Capabilities ajudará a definir um ambiente para definir o comportamento do navegador/ambiente no qual o teste pode ser executado.
Ajuda a lançar nosso aplicativo no ambiente desejado com os recursos que desejamos usar.