Репозиторий объектов в Selenium (XML и файл свойств)

Что такое репозиторий объектов?

Репозиторий объектов — это общее место хранения всех объектов. В Selenium В контексте WebDriver объекты обычно представляют собой локаторы, используемые для уникальной идентификации веб-элементов.

Основным преимуществом использования репозитория объектов является отделение объектов от тестовых случаев. Если значение локатора одного веб-элемента изменится, необходимо изменить только репозиторий объектов, а не вносить изменения во все тестовые случаи, в которых использовался локатор. Поддержание репозитория объектов повышает модульность реализации платформы.

Типы репозиториев объектов в Selenium Веб-драйвер

Selenium WebDriver по умолчанию не предлагает встроенный репозиторий объектов. Однако репозитории объектов могут быть созданы с использованием подхода пары ключ-значение, при котором ключ относится к имени, данному объекту, а значение относится к свойствам, используемым для уникальной идентификации объекта на веб-странице.

Ниже приведены типы репозиториев объектов, которые можно создать в Selenium ВебДрайвер.

  1. Репозиторий объектов с использованием файла свойств
  2. Репозиторий объектов с использованием XML-файла

Selenium Репозиторий объектов веб-драйвера с использованием файла свойств

В этом подходе файл свойств представляет собой текстовый файл, в котором данные хранятся в форме пар ключ-значение. В приведенном ниже руководстве будут рассмотрены следующие темы.

Шаг 1) Создание файла свойств в eclipse

  1. Для начала необходимо создать в eclipse приведенную ниже структуру Java-проекта. Имя проекта и имя пакета могут быть любыми допустимыми именами.

Создание файла свойств в Eclipse

  1. Щелкните правой кнопкой мыши основную папку проекта и выберите «Создать» -> «Другое».

Создание файла свойств в Eclipse

  1. В следующем окне выберите «Основные» -> «Файл» и нажмите кнопку «Далее».

Создание файла свойств в Eclipse

  1. Укажите допустимое имя файла с расширением «.properties» в окне нового файлового ресурса и нажмите кнопку «Готово».

Создание файла свойств в Eclipse

  1. Файл с именем «application.properties» должен отображаться в структуре проекта.

Создание файла свойств в Eclipse

Шаг 2) Сохранение данных в файле свойств

  1. Данные хранятся в файле свойств в виде пар ключ-значение, причем ключ уникален во всем файле.
  2. Мы попробуем использовать файл свойств для идентификации веб-элементов с помощью значений локаторов.
  3. Откройте файл 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) Чтение данных из файла свойств

  1. Чтение данных из файла свойств можно выполнить с помощью встроенного класса Properties, предоставленного в пакете java.util.
  2. Первоначально необходимо создать объект класса Properties, как показано ниже.
  Properties obj = new Properties();
  1. Нам нужно создать объект класса FileInputStream с путем к файлу свойств.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Чтение данных из файла свойств можно выполнить с помощью метода загрузки, предлагаемого классом 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, на основе которого создана веб-страница. Ниже приведен список тем, которые будут затронуты.

Шаг 1) Создание XML-файла в eclipse

  1. Приведенную ниже структуру проекта Java необходимо создать в Eclipse.

Создание XML-файла в Eclipse

  1. Щелкните правой кнопкой мыши папку проекта, выберите «Создать» -> «Другое».

Создание XML-файла в Eclipse

  1. Выберите XML-файл в папке XML и нажмите кнопку «Далее».

Создание XML-файла в Eclipse

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

Создание XML-файла в Eclipse

  1. XML-файл будет добавлен в папку проекта, как показано ниже.

Создание XML-файла в Eclipse

Шаг 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.

Сохранение данных в XML-файле

На вкладке «Дизайн» вы увидите

Сохранение данных в 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
    1. Репозиторий объектов с использованием файла свойств
    2. Репозиторий объектов с использованием XML-файла
  • Файл свойств представляет собой текстовый файл, в котором данные хранятся в виде пар ключ-значение.
  • Формат XML-файла будет копировать формат HTML, на основе которого создана веб-страница.