Репозиторий объектов в Selenium (XML и файл свойств)
Что такое репозиторий объектов?
Репозиторий объектов — это общее место хранения всех объектов. В Selenium В контексте WebDriver объекты обычно представляют собой локаторы, используемые для уникальной идентификации веб-элементов.
Основным преимуществом использования репозитория объектов является отделение объектов от тестовых случаев. Если значение локатора одного веб-элемента изменится, необходимо изменить только репозиторий объектов, а не вносить изменения во все тестовые случаи, в которых использовался локатор. Поддержание репозитория объектов повышает модульность реализации платформы.
Типы репозиториев объектов в Selenium Веб-драйвер
Selenium WebDriver по умолчанию не предлагает встроенный репозиторий объектов. Однако репозитории объектов могут быть созданы с использованием подхода пары ключ-значение, при котором ключ относится к имени, данному объекту, а значение относится к свойствам, используемым для уникальной идентификации объекта на веб-странице.
Ниже приведены типы репозиториев объектов, которые можно создать в Selenium ВебДрайвер.
- Репозиторий объектов с использованием файла свойств
- Репозиторий объектов с использованием XML-файла
Selenium Репозиторий объектов веб-драйвера с использованием файла свойств
В этом подходе файл свойств представляет собой текстовый файл, в котором данные хранятся в форме пар ключ-значение. В приведенном ниже руководстве будут рассмотрены следующие темы.
- Создание файла свойств в eclipse
- Сохранение данных в файле свойств
- Чтение данных из файла свойств
- Использование файла свойств в тестовых сценариях
Шаг 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");
- Чтение данных из файла свойств можно выполнить с помощью метода загрузки, предлагаемого классом Properties в Java. Код ниже демонстрирует использование метода загрузки.
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); // 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 означает расширяемый язык разметки. 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 Проект
Резюме
- Репозиторий объектов — это общее место хранения всех объектов.
- Selenium WebDriver по умолчанию не предлагает встроенный репозиторий объектов.
- Вы можете создать 2 типа репозитория объектов в Selenium
- Репозиторий объектов с использованием файла свойств
- Репозиторий объектов с использованием XML-файла
- Файл свойств представляет собой текстовый файл, в котором данные хранятся в виде пар ключ-значение.
- Формат XML-файла будет копировать формат HTML, на основе которого создана веб-страница.