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

Що таке репозиторій об'єктів?
Репозиторій об’єктів — це загальне місце для зберігання всіх об’єктів. в Selenium У контексті WebDriver об’єкти зазвичай є локаторами, які використовуються для унікальної ідентифікації веб-елементів.
Основною перевагою використання репозиторію об'єктів є розділення об'єктів від тестових випадків. Якщо значення локатора одного веб-елемента змінюється, потрібно змінити лише репозиторій об'єктів, а не вносити зміни у всі тестові випадки, в яких використовувався локатор. Підтримка репозиторію об'єктів підвищує модульність реалізації фреймворку.
Типи сховищ об'єктів в Selenium Веб-драйвер
Selenium WebDriver за замовчуванням не пропонує вбудованого репозиторію об'єктів. Однак, репозиторії об'єктів можна створювати за допомогою підходу пари ключ-значення, де ключ посилається на ім'я, надане об'єкту, а значення посилається на властивості, що використовуються для унікальної ідентифікації об'єкта на веб-сторінці.
Нижче наведено типи сховищ об’єктів, у яких можна створити Selenium WebDriver.
- Репозиторій об’єктів за допомогою файлу властивостей
- Репозиторій об'єктів із використанням файлу XML
Selenium Репозиторій об’єктів веб-драйвера з використанням файлу властивостей
У цьому підході файл властивостей – це текстовий файл, у якому дані зберігаються у вигляді пар ключ-значення. У наведеному нижче посібнику будуть розглянуті такі теми.
Крок 1) Створення файлу властивостей у eclipse
- Для початку, в Eclipse потрібно створити наведену нижче структуру проекту Java. Назва проекту та назва пакета можуть бути будь-якими допустимими назвами.
- Клацніть правою кнопкою миші на головній папці проекту та виберіть «Створити» -> «Інше».
- У наступному вікні виберіть Загальні -> Файл і натисніть кнопку «Далі»
- У вікні нового файлового ресурсу вкажіть дійсне ім'я файлу з розширенням «.properties» і натисніть кнопку «Готово».
- Файл з назвою «application.properties» має відображатися у структурі проекту.
Крок 2) Зберігання даних у файлі властивостей
- Дані зберігаються у файлі властивостей у вигляді пар ключ-значення, причому ключ є унікальним у всьому файлі.
- Ми спробуємо використати файл властивостей для ідентифікації веб-елементів за допомогою значень локатора.
- Відкрийте файл 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) Читання даних із файлу властивостей
- Зчитування даних з файлу властивостей можна виконати за допомогою вбудованого класу Properties, що міститься в пакеті java.util.
- Спочатку потрібно створити об'єкт класу Properties, як показано нижче
Properties obj = new Properties();
- Нам потрібно створити об'єкт класу FileInputStream зі шляхом до файлу властивостей
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Зчитування даних з файлу властивостей можна виконати за допомогою методу 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, на основі якого побудовано веб-сторінку. Нижче наведено список тем, які будуть розглянуті.
- Створення XML-файлу в eclipse
- Зберігання даних у файлі XML
- Читання даних з файлу XML
- Використання файлу XML у сценаріях тестування
Крок 1) Створення XML-файлу в eclipse
- Наведену нижче структуру проекту Java потрібно створити в Eclipse.
- Клацніть правою кнопкою миші папку проекту, виберіть Створити -> Інше
- Виберіть XML-файл у папці XML і натисніть кнопку «Далі»
- Введіть коректне ім'я XML-файлу та натисніть кнопку «Готово»
- Файл XML буде додано до папки проекту, як показано нижче
Крок 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
У вкладці дизайн ви побачите
Крок 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 Проекти













