Repositorio de objetos en Selenium (XML y archivo de propiedades)
¿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 utilizar el repositorio de objetos es la segregación de objetos de los casos de prueba. Si el valor del localizador de un elemento web cambia, solo es necesario cambiar el repositorio de objetos en lugar de realizar cambios en todos los casos de prueba en los que se ha utilizado el localizador. Mantener un repositorio de objetos aumenta la modularidad de la implementación del marco.
Tipos de repositorios de objetos en Selenium Controlador web
Selenium WebDriver no ofrece un repositorio de objetos incorporado de forma predeterminada. Sin embargo, los repositorios de objetos se pueden crear utilizando el enfoque de par clave-valor en el que la clave se refiere al nombre dado al objeto y el valor se refiere a las propiedades utilizadas para identificar de forma única un objeto dentro de la página web.
Los siguientes son los tipos de repositorios de objetos que se pueden crear en Selenium Controlador web.
- Repositorio de objetos usando el archivo de propiedades
- Repositorio de objetos utilizando un archivo XML
Selenium Repositorio de objetos del controlador web mediante el archivo de propiedades
En este enfoque, el archivo de propiedades es un archivo de texto en el que se almacenan datos en forma de pares clave-valor. El siguiente tutorial abordará los siguientes temas.
- Creando un archivo de propiedades en eclipse
- Almacenamiento de datos en un archivo de propiedades
- Leer datos del archivo de propiedades
- Uso del archivo de propiedades en scripts de prueba
Paso 1) Crear un archivo de propiedades en eclipse
- Para comenzar, es necesario crear la siguiente estructura de proyecto Java en Eclipse. El nombre del proyecto y el nombre del paquete pueden ser cualquier nombre válido.
- Haga clic derecho en la carpeta principal del proyecto y seleccione Nuevo-> Otro
- En la siguiente ventana, seleccione General -> Archivo y haga clic en el botón "Siguiente".
- Proporcione un nombre de archivo válido con la extensión ".properties" en la ventana de recursos de nuevo archivo y haga clic en el botón "Finalizar".
- Se debe mostrar un archivo llamado 'application.properties' en la Estructura del proyecto
Paso 2) Almacenar datos en un archivo de propiedades
- Los datos se almacenan en el archivo de propiedades en forma de pares clave-valor, siendo la clave única en todo el archivo.
- Intentaremos utilizar el archivo de propiedades para identificar elementos web utilizando valores de localizador.
- 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
4) Para este tutorial se utiliza el siguiente sitio web de demostración:
http://demo.guru99.com/test/guru99home/
. Aquí está el escenario de prueba:
- Haga clic en el enlace Prueba móvil usando XPATH
- Navegar hacia atrás
- Introduzca datos en el cuadro de texto del correo electrónico utilizando ID
- Haga clic en el botón Registrarse usando ID
Paso 3) Leer datos del archivo de propiedades
- La lectura de datos del archivo de propiedades se puede realizar utilizando la clase Propiedades incorporada proporcionada en el paquete java.util.
- Inicialmente, se debe crear un objeto de la clase Propiedades como se muestra a continuación
Properties obj = new Properties();
- 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");
- La lectura de datos del archivo de propiedades se puede realizar utilizando el método de carga ofrecido por la clase Propiedades en Java. El siguiente código demuestra el uso del método de carga.
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
El archivo de propiedades se puede utilizar en scripts de prueba leyendo datos de un archivo de propiedades y pasando los datos como parámetro al método findElement. El siguiente código demuestra el uso de datos leídos del 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("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("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 de documento (DOM) como estructura básica. El formato de archivo XML replicará el formato HTML sobre el cual se construye la página web. A continuación se muestra la lista de temas que se cubrirán.
- Creando un archivo XML en Eclipse
- Almacenamiento de datos en un archivo XML
- Leer datos de un archivo XML
- Uso de archivos XML en scripts de prueba
Paso 1) Crear un archivo XML en eclipse
- La siguiente estructura del proyecto Java debe crearse en Eclipse.
- Haga clic derecho en la carpeta del proyecto, seleccione Nuevo -> Otro
- Seleccione el archivo XML dentro de la carpeta XML y haga clic en el botón "Siguiente".
- Ingrese un nombre de archivo XML válido y haga clic en el botón "Finalizar".
- Se agregará un archivo XML a la carpeta del proyecto como se muestra a continuación.
Paso 2) Almacenar datos en un archivo XML
Los datos se pueden almacenar en un archivo XML en forma de modelo de objetos de documento (DOM). Para simplificar, podemos utilizar el siguiente escenario de prueba como ejemplo.
- Haga clic en el enlace Prueba móvil usando XPATH
- Navegar de regreso a la página de inicio
- Introduzca datos en el cuadro de texto del correo electrónico utilizando ID
- Haga clic en el botón Registrarse usando ID
El siguiente es el formato del archivo XML que se 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
En la pestaña de diseño verás
Paso 3) Leer datos de un archivo XML
1. La lectura de datos de un archivo XML se puede realizar utilizando la clase 'dom4j' incorporada en 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, necesitamos crear un objeto Archivo y pasarlo como parámetro al método "lectura" de la clase SAXReader. Una vez que los datos del archivo XML se leen correctamente, podemos acceder a nodos individuales del documento XML utilizando el método "selectSingleNode".
Paso 4) Usar un archivo XML en scripts de prueba
El archivo XML se puede utilizar en scripts de prueba leyendo datos del archivo XML y pasando los datos como parámetro al método findElement. El siguiente código demuestra el uso de 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 código siguiente demuestra el uso del 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("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("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click(); } }
Descargue el controlador web Eclipse Proyectos
Resum
- Un repositorio de objetos es una ubicación de almacenamiento común para todos los objetos.
- Selenium WebDriver no ofrece un repositorio de objetos incorporado de forma predeterminada
- Puede crear 2 tipos de repositorio de objetos en Selenium
- Repositorio de objetos usando el archivo de propiedades
- Repositorio de objetos utilizando un archivo XML
- El archivo de propiedades es un archivo de texto en el que los datos se almacenan en forma de pares clave-valor.
- El formato de archivo XML replicará el formato HTML sobre el cual se construye la página web.