<style>.lazy{display:none}</style>Репозиторий объектов в Selenium

Репозиторий объектов в Selenium

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

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

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Содержание

Типы репозиториев объектов в Selenium WebDriver

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

В Selenium WebDriver репозитории объектов можно создать с использование файла Properties или с использованием XML-файла.

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

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

Шаг 1. Создание файла Properties в Eclipse

  1. В первую очередь необходимо создать следующую структуру проекта Java в Eclipse. Можно указать любое допустимое имя проекта и пакета.
Создание файла Properties
  1. Щёлкните правой кнопкой мыши по основной папке проекта и выберите New -> Other.
Создание файла Properties
  1. В следующем окне выберите пункт General -> File и нажмите кнопку Next.
Создание файла Properties
  1. Укажите допустимое имя файла с расширением .properties в окне создания нового файлового ресурса и нажмите кнопку Finish.
Создание файла Properties
  1. В структуре проекта должен отображаться файл с именем application.properties.
Создание файла 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

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

  1. В Eclipse необходимо создать приведённую ниже структуру проекта Java.
Создание XML-файла
  1. Щёлкните правой кнопкой мыши папку проекта, выберите New -> Other.
Создание XML-файла
  1. Выберите XML File в папке XML и нажмите кнопку Next.
Создание XML-файла
  1. Введите допустимое имя XML-файла и нажмите кнопку Finish.
Создание XML-файла
  1. Файл XML будет добавлен в папку проекта, как показано на иллюстрации.
Создание 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.

Сохранение XML-код в файле properties.xml

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

XML-код в файле properties.xml.

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

Перевод статьи «Object Repository in Selenium (XML & Properties File)».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *