Repositorio de objetos en Selenium

⚡ Resumen inteligente

Repositorio de objetos en Selenium Centraliza los localizadores de elementos en un único archivo externo, separándolos de los scripts de prueba. Este enfoque mejora el mantenimiento y permite a los evaluadores actualizar los localizadores en un solo lugar, en lugar de editar numerosos casos de prueba.

  • 🗂️ Concepto principal: Almacena los localizadores de la interfaz de usuario como pares clave-valor, mantenidos separados de Selenium Lógica de prueba de WebDriver.
  • 📄 Enfoque mediante archivo de propiedades: Almacena los localizadores en un archivo de texto .properties, que se leerá en tiempo de ejecución mediante la clase java.util.Properties.
  • 🧩 Enfoque mediante archivos XML: Utilice un archivo XML con el Modelo de Objetos del Documento y dom4j para leer los localizadores mediante selectSingleNode.
  • 🔧 Flujo de implementación: Crea el archivo, almacena los datos clave-valor, lee los valores en variables y luego pásalos a findElement.
  • 🛡️ Beneficio de mantenimiento: Cuando cambie un localizador, actualice solo el archivo del repositorio, no todos los casos de prueba afectados.

Repositorio de objetos en Selenium

¿Qué es un repositorio de objetos?

Un repositorio de objetos es una ubicación de almacenamiento común para todos los objetos. En Selenium En el contexto de WebDriver, los objetos normalmente serían los localizadores utilizados para identificar de forma única los elementos web.

La principal ventaja de usar un repositorio de objetos es la separación entre objetos y casos de prueba. Si cambia el valor del localizador de un elemento web, solo es necesario modificar el repositorio de objetos, en lugar de realizar cambios en todos los casos de prueba donde se haya utilizado dicho localizador. Mantener un repositorio de objetos aumenta la modularidad de la implementación del framework.

Tipos de repositorios de objetos en Selenium Controlador web

Selenium WebDriver no ofrece un repositorio de objetos integrado de forma predeterminada. Sin embargo, se pueden crear repositorios de objetos utilizando el método de pares clave-valor, donde la clave se refiere al nombre asignado al objeto y el valor a las propiedades que lo identifican de forma única dentro de la página web.

Los siguientes son los tipos de repositorios de objetos que se pueden crear en Selenium Controlador web.

  1. Repositorio de objetos usando el archivo de propiedades
  2. Repositorio de objetos utilizando un archivo XML

Selenium Repositorio de objetos del controlador web mediante el archivo de propiedades

En este enfoque, un archivo de propiedades es un archivo de texto donde los datos se almacenan en forma de pares clave-valor. El siguiente tutorial abordará los siguientes temas.

Paso 1) Crear un archivo de propiedades en eclipse

  1. Para empezar, es necesario crear en Eclipse la siguiente estructura de proyecto Java. El nombre del proyecto y el nombre del paquete pueden ser cualquier nombre válido.

Crear un archivo de propiedades en Eclipse

  1. Haz clic con el botón derecho en la carpeta principal del proyecto y selecciona Nuevo -> Otro

Crear un archivo de propiedades en Eclipse

  1. En la siguiente ventana, seleccione General -> Archivo y haga clic en el botón 'Siguiente'.

Crear un archivo de propiedades en Eclipse

  1. Proporcione un nombre de archivo válido con la extensión '.properties' en la nueva ventana de recursos de archivo y haga clic en el botón 'Finalizar'.

Crear un archivo de propiedades en Eclipse

  1. En la estructura del proyecto debe aparecer un archivo llamado 'application.properties'.

Crear un archivo de propiedades en Eclipse

Paso 2) Almacenar datos en un archivo de propiedades

  1. Los datos se almacenan en un archivo de propiedades en forma de pares clave-valor, donde la clave es única en todo el archivo.
  2. Intentaremos utilizar el archivo de propiedades para identificar elementos web mediante valores de localización.
  3. Abra el archivo application.properties en Eclipse y almacenar los siguientes datos
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Almacenamiento de datos en un archivo de propiedades

4) Para este tutorial se utiliza el siguiente sitio web de demostración:

https://demo.guru99.com/test/guru99home/Este es el escenario de prueba:

  • Haz clic en el enlace de Pruebas móviles usando XPATH.
  • Navegar hacia atrás
  • Introduzca los datos en el cuadro de texto del correo electrónico utilizando el ID.
  • Haga clic en el botón Registrarse usando ID

Paso 3) Leer datos del archivo de propiedades

  1. La lectura de datos desde un archivo de propiedades se puede realizar utilizando la clase integrada Properties proporcionada en el paquete java.util.
  2. Inicialmente, se debe crear un objeto de la clase Properties como se muestra a continuación.
  Properties obj = new Properties();
  1. Necesitamos crear un objeto de la clase FileInputStream con la ruta al archivo de propiedades.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. La lectura de datos desde un archivo de propiedades se puede realizar mediante el método `load` que ofrece la clase `Properties` en Java. El siguiente código muestra cómo utilizar dicho método.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

La cadena 'mobileTesting' contendrá el XPATH para identificar el enlace de Mobile Testing dentro de la página web.

Paso 4) Usar el archivo de propiedades en los scripts de prueba

Un archivo de propiedades se puede usar en scripts de prueba leyendo los datos del archivo y pasándolos como parámetro al método findElement. El siguiente código muestra cómo usar los datos leídos de un archivo de propiedades en scripts de prueba.

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();

El siguiente es el código completo utilizado para el escenario de prueba anterior.

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 Repositorio de objetos WebDriver utilizando un archivo XML

XML significa Lenguaje de Marcado Extensible. Un archivo XML utiliza el Modelo de Objetos del Documento (DOM) como estructura básica. El formato del archivo XML reproduce el formato HTML sobre el que se construye la página web. A continuación, se presenta la lista de temas que se abordarán.

Paso 1) Crear un archivo XML en eclipse

  1. La siguiente estructura del proyecto Java debe crearse en Eclipse.

Crear un archivo XML en Eclipse

  1. Haga clic derecho en la carpeta del proyecto, seleccione Nuevo -> Otro

Crear un archivo XML en Eclipse

  1. Seleccione el archivo XML dentro de la carpeta XML y haga clic en el botón 'Siguiente'.

Crear un archivo XML en Eclipse

  1. Introduzca un nombre de archivo XML válido y haga clic en el botón "Finalizar".

Crear un archivo XML en Eclipse

  1. Se agregará un archivo XML a la carpeta del proyecto como se muestra a continuación.

Crear un archivo XML en Eclipse

Paso 2) Almacenar datos en un archivo XML

Los datos se pueden almacenar en un archivo XML en formato de Modelo de Objetos de Documento (DOM). Para simplificar, podemos usar el siguiente escenario de prueba como ejemplo.

  • Haz clic en el enlace de Pruebas móviles usando XPATH.
  • Volver a la página de inicio
  • Introduzca los datos en el cuadro de texto del correo electrónico utilizando el ID.
  • Haga clic en el botón Registrarse usando ID

A continuación se muestra el formato del archivo XML que se debe utilizar.

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

Almacene el código XML anterior en properties.xml

Almacenamiento de datos en un archivo XML

En la pestaña de diseño verás

Almacenamiento de datos en un archivo XML

Paso 3) Leer datos de un archivo XML

1. La lectura de datos desde un archivo XML se puede realizar utilizando la clase integrada 'dom4j' de Java. Tenga en cuenta que debe agregar los siguientes archivos JAR a la ruta de compilación de su proyecto antes de continuar con el código.

  • jaxen.jar
  • dom4j-1.6.jar

2. A continuación se muestra el código para leer datos del archivo 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, debemos crear un objeto File y pasarlo como parámetro al método 'read' de la clase SAXReader. Una vez que los datos del archivo XML se hayan leído correctamente, podremos acceder a los nodos individuales del documento XML mediante el método 'selectSingleNode'.

Paso 4) Usar un archivo XML en scripts de prueba

Un archivo XML puede utilizarse en scripts de prueba leyendo los datos del archivo y pasándolos como parámetro al método findElement. El siguiente código muestra cómo utilizar los datos leídos de un archivo XML en scripts de prueba.

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

El siguiente código demuestra el uso de un archivo XML en 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();

    }
}

Descargue el controlador web Eclipse Proyectos

Preguntas Frecuentes

Un repositorio de objetos solo almacena externamente los localizadores de elementos. El modelo de objetos de página es un patrón más amplio que encapsula los localizadores y las acciones de página dentro de las clases de página.

Sí. Los localizadores también se pueden almacenar en archivos Excel o CSV, leer mediante una biblioteca como Apache POI y pasarlos a findElement.

Utilice claves claras y descriptivas, agrupe los localizadores por página, dé preferencia a los localizadores estables como el ID y evite duplicados. Mantenga un repositorio por módulo para que un cambio de localizador actualice una sola entrada.

Sí. Varias herramientas con inteligencia artificial analizan una página, detectan elementos y exportan localizadores predefinidos a un repositorio. Aun así, los evaluadores deben revisar la estabilidad de los localizadores.

La función de autorreparación de IA observa los atributos de los elementos durante las ejecuciones y, cuando un localizador almacenado falla, selecciona automáticamente una coincidencia alternativa. Esto permite que las pruebas continúen ejecutándose a pesar de pequeños cambios en la interfaz y reduce el mantenimiento.

Resumir este post con: