Репозиторий — это общее место хранения всех объектов. В Selenium WebDriver объекты обычно представляют собой локаторы, используемые для уникальной идентификации веб-элементов.
Основным преимуществом использования репозитория является разделение объектов и тест-кейсов. Если значение локатора одного веб-элемента изменится, то нужно изменить только репозиторий объектов, а не вносить изменения в каждый тест-кейс, в котором используется локатор.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Содержание
- Типы репозиториев объектов в Selenium WebDriver
- Репозиторий объектов Selenium WebDriver с использованием файла Properties
- Репозиторий объектов Selenium WebDriver с использованием XML-файла
Типы репозиториев объектов в Selenium WebDriver
Selenium WebDriver не предлагает встроенного репозитория объектов. Однако хранилища объектов могут быть созданы с помощью подхода «ключ-значение». В данном случае ключ означает имя, присвоенное объекту, а значение — свойства, используемые для уникальной идентификации объекта на веб-странице.
В Selenium WebDriver репозитории объектов можно создать с использование файла Properties или с использованием XML-файла.
Репозиторий объектов Selenium WebDriver с использованием файла Properties
При этом подходе файл Properties (файл свойств) представляет собой текстовый документ, в котором хранятся данные в виде пар ключ-значение.
Шаг 1. Создание файла Properties в Eclipse
- В первую очередь необходимо создать следующую структуру проекта Java в Eclipse. Можно указать любое допустимое имя проекта и пакета.

- Щёлкните правой кнопкой мыши по основной папке проекта и выберите New -> Other.

- В следующем окне выберите пункт General -> File и нажмите кнопку Next.

- Укажите допустимое имя файла с расширением
.propertiesв окне создания нового файлового ресурса и нажмите кнопку Finish.

- В структуре проекта должен отображаться файл с именем application.properties.

Шаг 2. Сохранение данных в файле Properties
Данные в файле свойств хранятся в виде пар ключ-значение, причём ключ является уникальным в пределах файла. Мы будем использовать файл свойств для идентификации веб-элементов с помощью значений локаторов.
Откройте файл application.properties в Eclipse и сохраните в нём следующие данные:
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit

В этой статье используется демонстрационный сайт http://demo.guru99.com/test/guru99home/. Ниже приведён пример тестового сценария:
- Перейти по ссылке Mobile Testing, используя XPath
- Вернуться назад
- Ввести данные в текстовое поле электронной почты, используя идентификатор (ID)
- Нажать на кнопку Sign Up, используя идентификатор (ID)
Шаг 3. Чтение данных из файла Properties
- Чтение данных из файла свойств может быть выполнено с помощью встроенного класса
Properties, предоставляемого пакетом java.util. - Первоначально нужно создать объект класса
Properties:
Properties obj = new Properties();
- Необходимо создать объект класса
FileInputStreamс указанием пути к файлу свойств:
FileInputStream objfile = new
FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Чтение данных из файла свойств можно выполнить с помощью метода
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. Использование файла Properties в тестовых сценариях
Файл свойств можно использовать в тестовых сценариях, считывая данные и передавая их в качестве параметра методу 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
- В Eclipse необходимо создать приведённую ниже структуру проекта Java.

- Щёлкните правой кнопкой мыши папку проекта, выберите New -> Other.

- Выберите XML File в папке XML и нажмите кнопку Next.

- Введите допустимое имя XML-файла и нажмите кнопку Finish.

- Файл XML будет добавлен в папку проекта, как показано на иллюстрации.

Шаг 2. Сохранение данных в файле XML
Данные могут храниться в XML-файле в виде объектной модели документа. В качестве примера можно использовать следующий тестовый сценарий:
- На демонстрационном сайте перейти по ссылке Mobile Testing, используя XPath
- Вернуться на главную страницу
- Ввести данные в текстовое поле электронной почты, используя идентификатор (ID)
- Нажать на кнопку Sign Up, используя идентификатор
Формат XML-файла, который будет использоваться:
<menu>
<mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>
<email> philadelphia-field-email</email>
<signup> philadelphia-field-submit </signup>
</menu>
Сохраните XML-код в файле properties.xml.

На вкладке Design вы увидите следующее:

Шаг 3. Чтение данных из XML-файла
1. Чтение данных из XML-файла можно выполнить с помощью встроенного в Java класса dom4j. Обратите внимание, что перед началом работы в buildpath вашего проекта необходимо добавить следующие 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();
Так выглядит полный код, использованный для приведённого выше тестового сценария:
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 по умолчанию не предлагает встроенный репозиторий.
- В Selenium можно создать два типа репозиториев объектов:
- Репозиторий объектов с использованием файла Properties.
- Репозиторий объектов с использованием XML-файла.
- Файл Properties представляет собой текстовый файл, в котором хранятся данные в виде пар ключ-значение.
- Формат XML-файла повторяет формат HTML, на основе которого построена веб-страница.
Перевод статьи «Object Repository in Selenium (XML & Properties File)».