Репозиторій об'єктів в Selenium

⚡ Розумний підсумок

Репозиторій об'єктів в Selenium централізує локатори елементів в одному зовнішньому файлі, відокремлюючи їх від тестових скриптів. Такий підхід покращує обслуговування та дозволяє тестувальникам оновлювати локатори в одному місці, а не редагувати багато тестових випадків.

  • 🗂️ Основна концепція: Зберігає локатори інтерфейсу користувача як пари ключ-значення, окремо від Selenium Логіка тестування WebDriver.
  • 📄 Підхід до файлу властивостей: Зберігайте локатори у текстовому файлі .properties, який зчитується під час виконання через клас java.util.Properties.
  • 🧩 Підхід до XML-файлу: Використовуйте XML-файл з моделлю об'єктів документа та dom4j для зчитування локаторів через selectSingleNode.
  • 🔧 Послідовність впровадження: Створіть файл, збережіть дані ключ-значення, зчитайте значення у змінні, а потім передайте їх до findElement.
  • 🛡️ Вигода від технічного обслуговування: Коли змінюється локатор, оновлюйте лише файл репозиторію, а не кожен тестовий випадок, на який це впливає.

Репозиторій об'єктів в Selenium

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

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

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

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

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

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

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

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

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

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

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

Створення файлу властивостей у 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) Для цього підручника використовується наступний демонстраційний веб-сайт:

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

  • Натисніть на посилання «Тестування мобільних пристроїв за допомогою 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. Зчитування даних з файлу властивостей можна виконати за допомогою методу load, що пропонується класом Properties у Java. Наведений нижче код демонструє використання методу load.
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("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 Репозиторій об’єктів WebDriver з використанням файлу XML

XML розшифровується як розширювана мова розмітки. 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-файлі у формі моделі об'єктів документа (DOM). Для спрощення ми можемо використати наведений нижче тестовий сценарій як приклад.

  • Натисніть на посилання «Тестування мобільних пристроїв за допомогою 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("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();

    }
}

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

Поширені запитання

Репозиторій об'єктів зберігає локатори елементів лише зовні. Об'єктна модель сторінки (Page Object Model) — це ширший шаблон, який обгортає локатори та дії сторінки всередині класів сторінок.

Так. Локатори також можна зберігати у файлах Excel або CSV, зчитувати за допомогою бібліотеки, такої як Apache POI, та передавати до findElement.

Використовуйте чіткі, описові ключі, групуйте локатори за сторінками, віддавайте перевагу стабільним локаторам, таким як ID, та уникайте дублікатів. Зберігайте одне сховище на модуль, щоб зміна локатора оновлювала один запис.

Так. Кілька інструментів на основі штучного інтелекту сканують сторінку, виявляють елементи та експортують готові локатори в репозиторій. Тестерам все одно слід перевіряти локатори на стабільність.

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

Підсумуйте цей пост за допомогою: