Repositório de objetos em Selenium (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. Em Selenium No contexto do 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 webelement for alterado, apenas o repositório de objetos precisará ser alterado, em vez de fazer alterações em todos os casos de teste em que o localizador foi usado. Manter um repositório de objetos aumenta a modularidade da implementação da estrutura.

Tipos de repositórios de objetos em Selenium Web driver

Selenium O WebDriver não oferece um repositório de objetos integrado por padrão. No entanto, repositórios de objetos podem ser construídos usando a abordagem de par chave-valor, 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 em Selenium WebDriver.

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

Selenium Repositório de objetos do driver da Web usando arquivo de propriedades

Nesta abordagem, o arquivo de propriedades é um arquivo de texto onde os dados são armazenados na forma de pares chave-valor. O tutorial abaixo abordará os seguintes tópicos.

Etapa 1) Criando 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.

Criando um arquivo de propriedades em Eclipse

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

Criando um arquivo de propriedades em Eclipse

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

Criando um arquivo de propriedades em Eclipse

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

Criando um arquivo de propriedades em Eclipse

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

Criando um arquivo de propriedades em Eclipse

Etapa 2) Armazenando dados no arquivo de propriedades

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

Armazenando dados em arquivo de propriedades

4) Para este tutorial, o seguinte site de demonstração está sendo usado:

https://demo.guru99.com/test/guru99home/. Aqui está o cenário de teste:

  • Clique no link Mobile Testing usando XPATH
  • Navegar de volta
  • Insira os dados na caixa de texto do e-mail usando o ID
  • Clique no botão Cadastre-se usando ID

Etapa 3) Lendo dados do arquivo de propriedades

  1. A leitura de dados do arquivo de propriedades pode ser feita usando a classe Properties integrada fornecida no pacote java.util.
  2. Inicialmente, um objeto da classe Properties 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 dos dados do arquivo de propriedades pode ser feita usando o método load oferecido pela classe Properties em java. O código abaixo demonstra o uso do método load.
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 Mobile Testing na página da web.

Etapa 4) Usando 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 parâmetro para o método findElement. O código abaixo 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("testguru99@gmail.com");								
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("https://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("testguru99@gmail.com");									
    driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();							
  }		

}		

Selenium Repositório de objetos WebDriver usando arquivo XML

XML significa Linguagem de Marcação Extensível. 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 é construída. Abaixo está a lista de tópicos que serão abordados.

Etapa 1) Criando um arquivo XML no Eclipse

  1. A estrutura do projeto Java abaixo precisa ser criada em Eclipse.

Criando um arquivo XML em Eclipse

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

Criando um arquivo XML em Eclipse

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

Criando um arquivo XML em Eclipse

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

Criando um arquivo XML em Eclipse

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

Criando um arquivo XML em Eclipse

Etapa 2) Armazenando dados em arquivo XML

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

  • Clique no link Mobile Testing usando XPATH
  • Navegue de volta à página inicial
  • Insira os dados na caixa de texto do e-mail usando o ID
  • Clique no botão Cadastre-se usando ID

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

<menu>     
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>  
      <email> philadelphia-field-email</email> 
      <signup> philadelphia-field-submit </signup>     
 </menu>

Armazene o código XML acima em properties.xml

Armazenando dados no arquivo XML

Na guia de design você verá

Armazenando dados no arquivo XML

Etapa 3) Lendo dados do arquivo XML

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

  • jaxen.jar
  • dom4j-1.6.jar

2. Abaixo está o código para ler 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. Depois que os dados do arquivo XML forem lidos com sucesso, podemos acessar nós individuais do documento XML usando o método 'selectSingleNode'.

Etapa 4) Usando 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 abaixo 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("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

O código abaixo demonstra o uso do arquivo XML no Selenium 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("https://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("testguru99@gmail.com");						
driver.findElement(By.id(signUpButton)).click();				

	}		
}		

Baixe o WebDriver Eclipse PROJETO

Resumo

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