Repositório de objetos em Selenium

⚡ Resumo Inteligente

Repositório de objetos em Selenium Centraliza os localizadores de elementos em um único arquivo externo, separando-os dos scripts de teste. Essa abordagem melhora a manutenção e permite que os testadores atualizem os localizadores em um único local, em vez de editar vários casos de teste.

  • 🗂️ Conceito Central: Armazena localizadores da interface do usuário como pares de chave-valor, mantidos separados de Selenium Lógica de teste do WebDriver.
  • 📄 Abordagem do arquivo de propriedades: Armazene os localizadores em um arquivo de texto .properties, que será lido em tempo de execução por meio da classe java.util.Properties.
  • 🧩 Abordagem com arquivo XML: Utilize um arquivo XML com o Modelo de Objeto de Documento (DOM) e o dom4j para ler os localizadores através do selectSingleNode.
  • 🔧 Fluxo de implementação: Crie o arquivo, armazene os dados de chave-valor, leia os valores para variáveis ​​e, em seguida, passe-os para findElement.
  • 🛡️ Benefício de Manutenção: Quando um localizador for alterado, atualize apenas o arquivo do repositório, e não todos os casos de teste afetados.

Repositório de objetos em Selenium

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 um repositório de objetos é a segregação dos objetos dos casos de teste. Se o valor do localizador de um elemento web for alterado, apenas o repositório de objetos precisa ser modificado, em vez de alterar todos os casos de teste nos quais o localizador foi utilizado. Manter um repositório de objetos aumenta a modularidade da implementação do framework.

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 criados usando a abordagem de pares chave-valor, em que a chave se refere ao nome atribuído 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

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

Etapa 1) Criando um arquivo de propriedades no Eclipse

  1. Para começar, é necessário criar a seguinte estrutura de projeto Java 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 do mouse na pasta principal do projeto e selecione Novo -> Outro

Criando um arquivo de propriedades em Eclipse

  1. Na janela seguinte, selecione Geral -> Arquivo e clique no botão "Avançar".

Criando um arquivo de propriedades em Eclipse

  1. Na janela de novo recurso de arquivo, forneça um nome de arquivo válido com a extensão '.properties' 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 em um arquivo de propriedades na forma de pares chave-valor, sendo a chave única em todo o arquivo.
  2. Vamos tentar usar o arquivo de propriedades para identificar elementos da web usando valores de localização.
  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 de 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 Cadastre-se usando ID

Etapa 3) Lendo dados do arquivo de propriedades

  1. A leitura de dados de um arquivo de propriedades pode ser feita usando a classe Properties integrada, fornecida no pacote java.util.
  2. Inicialmente, é necessário criar um objeto da classe Properties, 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 de um 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

Um arquivo de propriedades pode ser usado em scripts de teste lendo os dados do arquivo e passando-os como parâmetro para o método `findElement`. O código abaixo demonstra o uso de dados lidos de um 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);
        // Navigate 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 utiliza o Modelo de Objeto de Documento (DOM) como estrutura básica. O formato do arquivo XML replica o formato HTML sobre o qual a página 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 no formato do Modelo de Objeto de Documento (DOM). Para simplificar, podemos usar o cenário de teste abaixo como exemplo.

  • Clique no link de Teste Móvel usando XPath
  • Voltar à página inicial
  • Insira os dados na caixa de texto do e-mail usando o ID.
  • Clique no botão Cadastre-se usando ID

Segue abaixo o formato do arquivo XML a ser utilizado.

<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 de um arquivo XML pode ser feita utilizando a classe nativa 'dom4j' do 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. Assim 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

Um arquivo XML pode ser usado em scripts de teste lendo os dados do arquivo XML e passando-os como parâmetro para o método `findElement`. O código abaixo demonstra o uso de dados lidos de um 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 de um 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

Perguntas Frequentes

Um repositório de objetos armazena apenas localizadores de elementos externamente. O Page Object Model é um padrão mais abrangente que encapsula localizadores e ações de página dentro de classes de página.

Sim. Os localizadores também podem ser armazenados em arquivos Excel ou CSV, lidos usando uma biblioteca como o Apache POI e passados ​​para a função findElement.

Use chaves claras e descritivas, agrupe os localizadores por página, prefira localizadores estáveis ​​como IDs e evite duplicados. Mantenha um repositório por módulo para que uma alteração no localizador atualize apenas uma entrada.

Sim. Diversas ferramentas com auxílio de IA escaneiam uma página, detectam elementos e exportam localizadores prontos para um repositório. Os testadores ainda devem revisar os localizadores para verificar sua estabilidade.

A autorreparação por IA observa os atributos dos elementos durante as execuções e, quando um localizador armazenado falha, seleciona automaticamente uma correspondência alternativa. Isso mantém os testes em execução apesar de pequenas alterações na interface e reduz a necessidade de manutenção.

Resuma esta postagem com: