Репозиторій об'єктів в Selenium (XML і файл властивостей)

Що таке репозиторій об'єктів?

Репозиторій об’єктів — це загальне місце для зберігання всіх об’єктів. в Selenium У контексті WebDriver об’єкти зазвичай є локаторами, які використовуються для унікальної ідентифікації веб-елементів.

Основною перевагою використання репозиторію об’єктів є відокремлення об’єктів від тестових випадків. Якщо значення локатора одного веб-елемента змінюється, потрібно змінити лише репозиторій об’єктів, а не вносити зміни в усіх тестових випадках, у яких використовувався локатор. Підтримка репозиторію об’єктів збільшує модульність реалізації фреймворку.

Типи сховищ об'єктів в Selenium Веб-драйвер

Selenium WebDriver за замовчуванням не пропонує вбудоване сховище об’єктів. Однак репозиторії об’єктів можна створювати за допомогою підходу пари ключ-значення, де ключ посилається на назву об’єкта, а значення – на властивості, які використовуються для унікальної ідентифікації об’єкта на веб-сторінці.

Нижче наведено типи сховищ об’єктів, у яких можна створити Selenium WebDriver.

  1. Репозиторій об’єктів за допомогою файлу властивостей
  2. Репозиторій об'єктів із використанням файлу XML

Selenium Репозиторій об’єктів веб-драйвера з використанням файлу властивостей

У цьому підході файл властивостей є текстовим файлом, у якому дані зберігаються у формі пар ключ-значення. У наведеному нижче посібнику розглядатимуться такі теми.

Крок 1) Створення файлу властивостей у eclipse

  1. Для початку потрібно створити наведену нижче структуру проекту Java в eclipse. Назва проекту та назва пакета можуть бути будь-якими дійсними назвами.

Створення файлу властивостей у Eclipse

  1. Клацніть правою кнопкою миші на головній папці проекту та виберіть Створити-> Інше

Створення файлу властивостей у Eclipse

  1. У наступному вікні виберіть Загальні -> Файл і натисніть кнопку «Далі».

Створення файлу властивостей у Eclipse

  1. Укажіть дійсне ім’я файлу з розширенням «.properties» у новому вікні ресурсу файлів і натисніть кнопку «Готово».

Створення файлу властивостей у Eclipse

  1. Файл із назвою "application.properties" має відображатися в структурі проекту

Створення файлу властивостей у Eclipse

Крок 2) Зберігання даних у файлі властивостей

  1. Дані зберігаються у файлі властивостей у формі пар ключ-значення, причому ключ є унікальним у всьому файлі.
  2. Ми спробуємо використати файл властивостей для ідентифікації веб-елементів за допомогою значень локатора.
  3. Відкрийте файл application.properties у Eclipse і збережіть наступні дані
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Зберігання даних у файлі властивостей

4) Для цього підручника використовується наступний демонстраційний веб-сайт:

http://demo.guru99.com/test/guru99home/. Ось тестовий сценарій:

  • Клацніть посилання Mobile Testing using XPATH
  • Перейти назад
  • Введіть дані в текстове поле електронної пошти за допомогою ідентифікатора
  • Натисніть кнопку Зареєструватися за допомогою ідентифікатора

Крок 3) Читання даних із файлу властивостей

  1. Читання даних із файлу властивостей можна здійснити за допомогою вбудованого класу Properties, який міститься в пакеті java.util.
  2. Спочатку потрібно створити об’єкт класу Properties, як показано нижче
  Properties obj = new Properties();
  1. Нам потрібно створити об’єкт класу FileInputStream із шляхом до файлу властивостей
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Читання даних із файлу властивостей можна здійснити за допомогою методу завантаження, запропонованого класом Properties у java. Наведений нижче код демонструє використання методу завантаження.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

Рядок «mobileTesting» міститиме XPATH для ідентифікації посилання Mobile Testing на веб-сторінці.

Крок 4) Використання файлу властивостей у тестових сценаріях

Файл властивостей можна використовувати в тестових сценаріях, зчитуючи дані з файлу властивостей і передаючи дані як параметр методу findElement. Наведений нижче код демонструє використання даних, зчитаних із файлу властивостей у тестових сценаріях.

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

Нижче наведено повний код, використаний для наведеного вище тестового сценарію.

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 Репозиторій об’єктів WebDriver з використанням файлу XML

XML розшифровується як Extensible Markup Language. XML-файл використовує об’єктну модель документа (DOM) як базову структуру. Формат файлу XML повторюватиме формат HTML, на основі якого створено веб-сторінку. Нижче наведено список тем, які будуть розглянуті.

Крок 1) Створення XML-файлу в eclipse

  1. Наведену нижче структуру проекту Java потрібно створити в Eclipse.

Створення XML-файлу в Eclipse

  1. Клацніть правою кнопкою миші папку проекту, виберіть Створити -> Інше

Створення XML-файлу в Eclipse

  1. Виберіть файл XML у папці XML і натисніть кнопку «Далі».

Створення XML-файлу в Eclipse

  1. Введіть дійсну назву файлу XML і натисніть кнопку «Готово».

Створення XML-файлу в Eclipse

  1. Файл XML буде додано до папки проекту, як показано нижче

Створення XML-файлу в Eclipse

Крок 2) Зберігання даних у файлі XML

Дані можуть зберігатися в XML-файлі у формі Document Object Model (DOM). Для простоти ми можемо використати наведений нижче тестовий сценарій як приклад.

  • Клацніть посилання Mobile Testing using XPATH
  • Перейдіть на головну сторінку
  • Введіть дані в текстове поле електронної пошти за допомогою ідентифікатора
  • Натисніть кнопку Зареєструватися за допомогою ідентифікатора

Нижче наведено формат файлу XML, який буде використовуватися.

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

Збережіть наведений вище XML-код у property.xml

Зберігання даних у файлі XML

У вкладці дизайн ви побачите

Зберігання даних у файлі XML

Крок 3) Читання даних із файлу XML

1. Читання даних із файлу XML можна здійснити за допомогою вбудованого класу «dom4j» у java. Будь ласка, зверніть увагу, що вам потрібно додати наведені нижче файли JAR до шляху збірки вашого проекту, перш ніж продовжити код.

  • jaxen.jar
  • dom4j-1.6.jar

2. Нижче наведено код для читання даних із файлу 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. Спочатку нам потрібно створити об’єкт File і передати його як параметр методу read класу SAXReader. Після успішного читання даних файлу XML ми можемо отримати доступ до окремих вузлів документа XML за допомогою методу selectSingleNode.

Крок 4) Використання XML-файлу в тестових сценаріях

XML-файл можна використовувати в тестових сценаріях, зчитуючи дані з XML-файлу та передаючи дані як параметр методу findElement. Наведений нижче код демонструє використання даних, зчитаних із файлу XML, у тестових сценаріях.

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

Наведений нижче код демонструє використання XML-файлу в 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();				

	}		
}		

Завантажте WebDriver Eclipse Проекти

Підсумки

  • Репозиторій об’єктів — це загальне місце для зберігання всіх об’єктів
  • Selenium WebDriver за замовчуванням не пропонує вбудоване сховище об’єктів
  • Ви можете створити 2 типи сховища об’єктів Selenium
    1. Репозиторій об’єктів за допомогою файлу властивостей
    2. Репозиторій об'єктів із використанням файлу XML
  • Файл властивостей — це текстовий файл, у якому дані зберігаються у формі пар ключ-значення
  • Формат файлу XML повторюватиме формат HTML, на основі якого створено веб-сторінку.