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á-
- O que é um repositório de objetos?
- Tipos de repositórios de objetos no Selenium Web Driver
- Repositório de objetos de driver da Web Selenium usando o arquivo de propriedades
- Repositório de objetos Selenium WebDriver usando arquivo XML
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.
- Repositório de objetos usando o arquivo de propriedades
- Repositório de objetos usando arquivo XML
Repositório de objetos de driver da Web Selenium 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.
- Criação de um arquivo de propriedades no eclipse
- Armazenamento de dados em arquivo de propriedades
- Lendo dados do arquivo de propriedades
- Usando arquivo de propriedades em scripts de teste
Etapa 1) Criação de um arquivo de propriedades no eclipse
- 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.
- Clique com o botão direito na pasta do projeto principal e selecione Novo-> Outro
- Na próxima janela, selecione Geral -> Arquivo e clique no botão 'Avançar'
- 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'
- Um arquivo chamado 'application.properties' deve ser exibido na Estrutura do Projeto
Etapa 2) Armazenamento de dados no arquivo de propriedades
- Os dados são armazenados no arquivo de propriedades na forma de pares de valores-chave, com a chave sendo exclusiva no arquivo.
- Tentaremos usar o arquivo de propriedades para identificar elementos da web usando valores de localizador.
- Abra o arquivo application.properties no Eclipse e armazene os seguintes dados
MobileTesting = // a [text () = 'TESTE PARA CELULAR']EmailTextBox = philadelphia-field-emailSignUpButton = 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 de celular 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 os dados do arquivo de propriedades
- A leitura de dados do arquivo de propriedades pode ser feita usando a classe interna de Propriedades fornecida no pacote java.util.
- Inicialmente, um objeto da classe Propriedades precisa ser criado conforme abaixo
Propriedades obj = novo Propriedades ();
- 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");
- 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 load.
Propriedades obj = novo Propriedades ();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 (" Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.");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 {// Criar instância WebDriverDriver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");driver = novo ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");driver.manage (). window (). maximize ();// Carrega o arquivo de propriedadesPropriedades obj = novo Propriedades ();FileInputStream objfile = new FileInputStream (System.getProperty ("user.dir") + "\\ application.properties");obj.load (objfile);// Indique para vincular o teste móvel e voltardriver.findElement (By.xpath (obj.getProperty ("MobileTesting"))). click ();driver.navigate (). back ();// Insira os dados no formuláriodriver.findElement (By.id (obj.getProperty ("EmailTextBox"))). sendKeys (" Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.");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.
- Criando um arquivo XML no eclipse
- Armazenamento de dados em arquivo XML
- Lendo dados de arquivo XML
- Usando arquivo XML em scripts de teste
Etapa 1) Criação de um arquivo XML no eclipse
- A estrutura do projeto java abaixo precisa ser criada no Eclipse.
- Clique com o botão direito na pasta do projeto, selecione Novo -> Outro
- Selecione o arquivo XML na pasta XML e clique no botão 'Avançar'
- Insira um nome de arquivo XML válido e clique no botão 'Concluir'
- 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 de celular 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.
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 de 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.
Arquivo inputFile = novo arquivo (System.getProperty ("user.dir") + "\\ properties.xml");SAXReader saxReader = novo SAXReader ();Documento document = saxReader.read (inputFile);String mobileTesting = document.selectSingleNode ("// menu / mobiletesting"). GetText ();String emailTextBox = document.selectSingleNode ("// menu / email"). GetText ();String signUpButton = document.selectSingleNode ("// menu / inscrição"). 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 (" Este endereço de e-mail está protegido contra spambots. Você precisa de Javascript habilitado para vê-lo.");driver.findElement (By.id (signUpButton)). click ();
O código a seguir 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) lança DocumentException {// Criando instância WebDriverDriver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");driver = novo ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");driver.manage (). window (). maximize ();// Lendo arquivo XMLArquivo inputFile = novo arquivo (System.getProperty ("user.dir") + "\\ properties.xml");SAXReader saxReader = novo SAXReader ();Documento document = saxReader.read (inputFile);String mobileTesting = document.selectSingleNode ("// menu / mobiletesting"). GetText ();String emailTextBox = document.selectSingleNode ("// menu / email"). GetText ();String signUpButton = document.selectSingleNode ("// menu / inscrição"). GetText ();// Navegando para o teste móvel e de voltadriver.findElement (By.xpath (mobileTesting)). click ();driver.navigate (). back ();// Inserindo dados do formuláriodriver.findElement (By.id (emailTextBox)). sendKeys (" Este endereço de e-mail está protegido contra spambots. Você precisa de Javascript habilitado para vê-lo.");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
- Repositório de objetos usando o arquivo de propriedades
- 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.