riando repositório de objetos no Selenium WebDriver: arquivo XML e propriedades

O que é um repositório de objetos?

Um repositório de objetos é um local de armazenamento comum para todos os objetos. No contexto do Selenium WebDriver, os objetos normalmente seriam os localizadores usados ​​para identificar exclusivamente os elementos da web.

A principal vantagem de usar o repositório de objetos é a segregação dos objetos dos casos de teste. Se o valor do localizador de um elemento da web for alterado, apenas o repositório de objetos precisará ser alterado, em vez de fazer alterações em todos os casos de teste nos quais o localizador foi usado. Manter um repositório de objetos aumenta a modularidade da implementação do framework.

Neste tutorial, você aprenderá-

Tipos de repositórios de objetos no Selenium Web Driver

O Selenium WebDriver não oferece um repositório de objetos embutido por padrão. No entanto, os repositórios de objetos podem ser construídos usando a abordagem de par de valores-chave, em que a chave se refere ao nome dado ao objeto e o valor se refere às propriedades usadas para identificar exclusivamente um objeto na página da web.

A seguir estão os tipos de repositórios de objetos que podem ser criados no Selenium WebDriver.

  1. Repositório de objetos usando o arquivo de propriedades
  2. Repositório de objetos usando arquivo XML

Repositório de objetos do Selenium Web Driver usando o arquivo de propriedades

Nessa abordagem, o arquivo de propriedades é um arquivo de texto em que os dados são armazenados na forma de pares de valores-chave. O tutorial a seguir abordará os seguintes tópicos.

Etapa 1) Criação de um arquivo de propriedades no eclipse

  1. Para começar, a estrutura do projeto java abaixo precisa ser criada no eclipse. O nome do projeto e o nome do pacote podem ser quaisquer nomes válidos.

  1. Clique com o botão direito na pasta do projeto principal e selecione Novo-> Outro

  1. Na próxima janela, selecione Geral -> Arquivo e clique no botão 'Avançar'

  1. Forneça um nome de arquivo válido com a extensão '.properties' na janela do novo recurso de arquivo e clique no botão 'Concluir'

  1. Um arquivo chamado 'application.properties' deve ser exibido na Estrutura do Projeto

Etapa 2) Armazenamento de dados no arquivo de propriedades

  1. Os dados são armazenados no arquivo de propriedades na forma de pares de valores-chave, com a chave sendo exclusiva no arquivo.
  2. Tentaremos usar o arquivo de propriedades para identificar elementos da web usando valores de localizador.
  3. Abra o arquivo application.properties no Eclipse e armazene os seguintes dados
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit

4) Para este tutorial, o seguinte site de demonstração está sendo usado: http://demo.guru99.com/test/guru99home/ . Aqui está o cenário de teste:

  • Clique no link Teste móvel usando XPATH
  • Navegar de volta
  • Insira os dados na caixa de texto do e-mail usando o ID
  • Clique no botão Sign Up using ID

Etapa 3) Lendo dados do arquivo de propriedades

  1. A leitura de dados do arquivo de propriedades pode ser feita usando a classe interna de Propriedades fornecida no pacote java.util.
  2. Inicialmente, um objeto da classe Propriedades precisa ser criado conforme abaixo
 Properties obj = new Properties(); 
  1. Precisamos criar um objeto da classe FileInputStream com o caminho para o arquivo de propriedades
FileInputStream objfile = new FileInputStream(System.getProperty('user.dir')+'\application.properties');
  1. A leitura de dados do arquivo de propriedades pode ser feita usando o método de carregamento oferecido pela classe Propriedades em java. O código a seguir demonstra o uso do método de carregamento.
 Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty('user.dir')+'\application.properties'); obj.load(objfile); String mobileTesting = obj.getProperty('MobileTesting'); 

A string 'mobileTesting' conterá o XPATH para identificar o link do Mobile Testing na página da web.

Etapa 4) Usando o arquivo de propriedades em scripts de teste

O arquivo de propriedades pode ser usado em scripts de teste lendo dados de um arquivo de propriedades e passando os dados como um parâmetro para o método findElement. O código a seguir demonstra o uso de dados lidos do arquivo de propriedades em scripts de teste.

 driver.findElement(By.xpath(obj.getProperty('MobileTesting'))).click(); driver.findElement(By.id(obj.getProperty('EmailTextBox'))).sendKeys('This email address is being protected from spambots. You need JavaScript enabled to view it.'); driver.findElement(By.id(obj.getProperty('SignUpButton'))).click(); 

A seguir está o código completo usado para o cenário de teste acima.

 package com.objectrepository.demo; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoOR { public static void main(String[] args) throws IOException { // Create WebDriver Instance WebDriver driver; System.setProperty('webdriver.chrome.driver','G:\chromedriver.exe'); driver = new ChromeDriver(); driver.get('http://demo.guru99.com/test/guru99home/'); driver.manage().window().maximize(); // Load the properties File Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty('user.dir')+'\application.properties'); obj.load(objfile); // Nagigate to link Mobile Testing and Back driver.findElement(By.xpath(obj.getProperty('MobileTesting'))).click(); driver.navigate().back(); // Enter Data into Form driver.findElement(By.id(obj.getProperty('EmailTextBox'))).sendKeys('This email address is being protected from spambots. You need JavaScript enabled to view it.'); driver.findElement(By.id(obj.getProperty('SignUpButton'))).click(); } } 

Repositório de objetos Selenium WebDriver usando arquivo XML

XML significa Extensible Markup Language. Um arquivo XML usa Document Object Model (DOM) como estrutura básica. O formato de arquivo XML replicará o formato HTML no qual a página da web foi construída. Abaixo está a lista de tópicos que serão abordados.

Etapa 1) Criação de um arquivo XML no eclipse

  1. A estrutura do projeto java abaixo precisa ser criada no Eclipse.

  1. Clique com o botão direito na pasta do projeto, selecione Novo -> Outro

  1. Selecione o arquivo XML dentro da pasta XML e clique no botão 'Avançar'

  1. Insira um nome de arquivo XML válido e clique no botão 'Concluir'

  1. Um arquivo XML será adicionado à pasta do projeto conforme mostrado abaixo

Etapa 2) Armazenamento de dados em arquivo XML

Os dados podem ser armazenados em arquivo XML na forma de Document Object Model (DOM). Para simplificar, podemos usar o cenário de teste abaixo como exemplo.

  • Clique no link Teste móvel usando XPATH
  • Navegue de volta para a página inicial
  • Insira os dados na caixa de texto do e-mail usando o ID
  • Clique no botão Sign Up using ID

A seguir está o formato do arquivo XML a ser usado.

 //a[text()='MOBILE TESTING'] philadelphia-field-email philadelphia-field-submit 

Armazene o código XML acima em properties.xml

Na guia de design, você verá

Etapa 3) Lendo dados do arquivo XML

1. A leitura de dados do arquivo XML pode ser realizada usando a classe integrada 'dom4j' em java. Observe que você precisa adicionar os arquivos JAR abaixo no buildpath do seu projeto antes de prosseguir com o código.

  • jaxen.jar
  • dom4j-1.6.jar

2. Abaixo está o código para ler os dados do arquivo XML.

 File inputFile = new File(System.getProperty('user.dir') +'\properties.xml'); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode('//menu/mobiletesting').getText(); String emailTextBox = document.selectSingleNode('//menu/email').getText(); String signUpButton = document.selectSingleNode('//menu/signup').getText(); 

3. Inicialmente, precisamos criar um objeto File e passá-lo como parâmetro para o método 'read' da classe SAXReader. Uma vez que os dados do arquivo XML são lidos com sucesso, podemos acessar nós individuais do documento XML usando o método 'selectSingleNode'.

Etapa 4) Usando o arquivo XML em scripts de teste

O arquivo XML pode ser usado em scripts de teste lendo dados do arquivo XML e passando os dados como parâmetro para o método findElement. O código a seguir demonstra o uso de dados lidos do arquivo XML em scripts de teste.

 driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys('This email address is being protected from spambots. You need JavaScript enabled to view it.'); driver.findElement(By.id(signUpButton)).click(); 

O código a seguir demonstra o uso do arquivo XML no selênio WebDriver

 package com.objectrepository.demo; import java.io.*; import java.util.*; import org.dom4j.*; import org.dom4j.io.SAXReader; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoORXML { public static void main(String[] args) throws DocumentException { // Creating WebDriver Instance WebDriver driver; System.setProperty('webdriver.chrome.driver','G:\chromedriver.exe'); driver = new ChromeDriver(); driver.get('http://demo.guru99.com/test/guru99home/'); driver.manage().window().maximize(); // Reading XML File File inputFile = new File(System.getProperty('user.dir') +'\properties.xml'); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode('//menu/mobiletesting').getText(); String emailTextBox = document.selectSingleNode('//menu/email').getText(); String signUpButton = document.selectSingleNode('//menu/signup').getText(); //Navigating to Mobile Testing and back driver.findElement(By.xpath(mobileTesting)).click(); driver.navigate().back(); //Entering Form Data driver.findElement(By.id(emailTextBox)).sendKeys('This email address is being protected from spambots. You need JavaScript enabled to view it.'); driver.findElement(By.id(signUpButton)).click(); } } 

Baixe o Projeto Eclipse WebDriver

Resumo:

  • Um repositório de objetos é um local de armazenamento comum para todos os objetos
  • Selenium WebDriver não oferece um repositório de objetos embutido por padrão
  • Você pode criar 2 tipos de repositório de objetos no Selenium
    1. Repositório de objetos usando o arquivo de propriedades
    2. Repositório de objetos usando arquivo XML
  • O arquivo de propriedades é um arquivo de texto em que os dados são armazenados na forma de pares chave-valor
  • O formato de arquivo XML replicará o formato HTML no qual a página da web foi construída.