Репозиторий объектов в Selenium
⚡ Умное резюме
Репозиторий объектов в Selenium Этот подход централизует локаторы элементов в одном внешнем файле, отделяя их от тестовых скриптов. Он упрощает сопровождение кода и позволяет тестировщикам обновлять локаторы в одном месте, вместо того чтобы редактировать множество тестовых случаев.

Что такое репозиторий объектов?
Репозиторий объектов — это общее место хранения всех объектов. В Selenium В контексте WebDriver объекты обычно представляют собой локаторы, используемые для уникальной идентификации веб-элементов.
Главное преимущество использования репозитория объектов заключается в отделении объектов от тестовых случаев. Если значение локатора одного веб-элемента изменяется, достаточно изменить только репозиторий объектов, а не все тестовые случаи, в которых использовался этот локатор. Поддержание репозитория объектов повышает модульность реализации фреймворка.
Типы репозиториев объектов в Selenium Веб-драйвер
Selenium WebDriver по умолчанию не предлагает встроенного хранилища объектов. Однако хранилища объектов можно создавать, используя подход «ключ-значение», где ключ обозначает имя объекта, а значение — свойства, используемые для уникальной идентификации объекта на веб-странице.
Ниже приведены типы репозиториев объектов, которые можно создать в Selenium ВебДрайвер.
- Репозиторий объектов с использованием файла свойств
- Репозиторий объектов с использованием 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 для идентификации ссылки на мобильное тестирование на веб-странице.
Шаг 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 расшифровывается как Extensible Markup Language (расширяемый язык разметки). 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-код в файле Properties.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(); } }
Загрузите веб-драйвер Eclipse Проект













