Репозиторий — это общее место хранения всех объектов. В Selenium WebDriver объекты обычно представляют собой локаторы, используемые для уникальной идентификации веб-элементов.
Основным преимуществом использования репозитория является разделение объектов и тест-кейсов. Если значение локатора одного веб-элемента изменится, то нужно изменить только репозиторий объектов, а не вносить изменения в каждый тест-кейс, в котором используется локатор.
БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"
Содержание
- Типы репозиториев объектов в 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)».