Учебники

62) Создание хранилища объектов

What is an Object Repository?

An object repository is a common storage location for all objects. In Selenium WebDriver context, objects would typically be the locators used to uniquely identify web elements.

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

В этом уроке вы узнаете

Типы хранилищ объектов в Selenium Web Driver

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

Ниже приведены типы хранилищ объектов, которые можно создавать в Selenium WebDriver.

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

Хранилище объектов Selenium Web Driver с использованием файла свойств

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

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

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

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

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

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

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

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

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

4) Для этого урока используется следующий демонстрационный веб-сайт: http://demo.guru99.com/test/guru99home/ . Вот тестовый сценарий:

  • Нажмите на ссылку Мобильное тестирование, используя XPATH
  • Навигация назад
  • Введите данные в текстовое поле электронной почты, используя идентификатор
  • Нажмите на кнопку Зарегистрироваться, используя ID

Шаг 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("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 расшифровывается как расширяемый язык разметки. Файл XML использует объектную модель документа (DOM) в качестве базовой структуры. Формат файла XML будет повторять формат HTML, на котором построена веб-страница. Ниже приведен список тем, которые будут рассмотрены.

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

  1. Приведенная ниже структура проекта Java должна быть создана в Eclipse.

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

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

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

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

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

Данные могут храниться в XML-файле в форме объектной модели документа (DOM). Для простоты мы можем использовать приведенный ниже тестовый сценарий в качестве примера.

  • Нажмите на ссылку Мобильное тестирование, используя XPATH
  • Навигация Вернуться на главную страницу
  • Введите данные в текстовое поле электронной почты, используя идентификатор
  • Нажмите на кнопку Зарегистрироваться, используя ID

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