Структура автоматизації селену: керування даними, керування ключовими словами & Гібридний

Зміст:

Anonim

Що таке Framework Selenium?

Селен Framework є структурою коди , що робить обслуговування коду простим і ефективним. Без фреймворків користувачі можуть розміщувати "код" і "дані" в одному і тому ж місці, яке не є ні багаторазовим, ні читабельним. Фреймворки дають корисні результати, такі як збільшення повторного використання коду, вища портативність, зниження вартості обслуговування скриптів, краща читабельність коду тощо.

В основному існує три типи фреймворків, створених Selenium WebDriver для автоматизації ручних тестових випадків

  • Тестова структура, керована даними
  • Тест на основі ключових слів
  • Гібридна система тестування

Управління даними в селені

Data Driven Framework у Selenium - це метод відокремлення наборів даних від тестового випадку. Як тільки набори даних відокремлюються від тестового випадку, їх можна легко змінити для певної функціональності, не змінюючи коду. Він використовується для отримання тестових кейсів та наборів із зовнішніх файлів, таких як Excel, .csv, .xml або деяких таблиць баз даних.

Щоб читати або писати Excel, Apache надає дуже відомі POI-бібліотеки. Ця бібліотека достатньо здатна читати та писати як формат XLS, так і XLSX у форматі Excel.

Для читання файлів XLS бібліотека POI забезпечує реалізацію HSSF .

Для читання XLSX вибір XSSF - реалізація бібліотеки POI . Давайте детально вивчимо ці реалізації.

Про тестування на основі даних ми вже дізналися в нашому попередньому підручнику

Управління ключовими словами в селені

Управління ключовими словами в Selenium - це метод, що використовується для прискорення автоматизованого тестування шляхом виділення ключових слів для загального набору функцій та інструкцій. Усі операції та інструкції, які потрібно виконати, записані у якийсь зовнішній файл, як-от аркуш Excel. Користувачі можуть легко контролювати та вказувати функції, які вони хочуть перевірити.

Ось як виглядає повна структура

Як бачите, це 5-кроковий фреймворк. Давайте детально вивчимо це

Крок 1)

  • Сценарій драйвера Execute.java викличе ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java має сценарій POI для зчитування даних з Excel

Крок 2)

  • ReadGuru99ExcelFile.java буде зчитувати дані з TestCase.xlsx
  • Ось як виглядає аркуш -
  • Відповідно до ключових слів, записаних у файлі Excel, фреймворк буде виконувати операцію над інтерфейсом користувача.
  • Наприклад, нам потрібно натиснути кнопку "Вхід". Відповідно, наш Excel матиме ключове слово "Клацніть". Тепер AUT може мати сотні кнопок на сторінці, щоб ідентифікувати кнопку Вхід, в Excel ми введемо Ім'я об'єкта як loginButton і тип об'єкта як ім'я (див. Виділений рядок на зображенні вище). Тип об’єкта може бути Xpath, ім’я CSS або будь-яке інше значення

Крок 3) ReadGuru99ExcelFile.java передасть ці дані сценарію драйвера Execute.java

Крок 4)

  • Для всіх наших веб-елементів інтерфейсу нам потрібно створити сховище об’єктів, де ми розмістимо їх локатор елементів (як Xpath, ім’я, шлях CSS, ім’я класу тощо)
  • Execute.java (наш скрипт драйвера) прочитає весь репозиторій об’єктів і збереже його у змінній
  • Для читання цього сховища об’єктів нам потрібен клас ReadObject, який має метод getObjectRepository для його читання.

ПРИМІТКА. Ви можете подумати, навіщо нам потрібно створювати сховище об’єктів. Відповідь допомагає в обслуговуванні коду. Наприклад, ми використовуємо кнопку з ім'ям = btnlogin у 10 різних тестових випадках. Надалі розробник вирішує змінити назву на btnlogin для подання. Вам доведеться внести зміни у всі 10 тестових випадків. У випадку зі сховищем об'єктів ви внесете зміни лише один раз у сховище.

Крок 5)

  • Драйвер передаватиме дані зі сховища Excel & Object до класу UIOperation
  • Клас UIOperation має функції для виконання дій, що відповідають таким ключовим словам, як CLICK, SETTEXT тощо ... згадані в Excel
  • Клас UIOperation - це клас Java, який має фактичну реалізацію коду для виконання операцій над веб-елементами

Повний проект буде виглядати як-

Давайте розглянемо приклад:

Сценарій тесту

  • Ми виконуємо 2 тестові кейси
  • Тестовий випадок 1:
  • Перейти до http://demo.guru99.com/V4/
  • Введіть ідентифікатор користувача
  • Введіть пароль
  • Натисніть Скинути
  • Тестовий випадок 2:
  • Перейти до http://demo.guru99.com/V4/
  • Введіть ідентифікатор користувача
  • Введіть пароль
  • Натисніть Увійти

об'єкт.властивості

url = http: //demo.guru99.com/V4/

ім'я користувача = uid

пароль = пароль

титул = барон

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

пакет excelExportAndFileIO;імпорт java.io.File;імпортувати java.io.FileInputStream;імпортувати java.io.IOException;імпорт org.apache.poi.hssf.usermodel.HSSFWorkbook;імпорт org.apache.poi.ss.usermodel.Sheet;імпорт org.apache.poi.ss.usermodel.Workbook;імпорт org.apache.poi.xssf.usermodel.XSSFWorkbook;публічний клас ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) кидає IOException {// Створення об'єкта класу File для відкриття файлу xlsxФайл файлу = новий файл (filePath + "\\" + fileName);// Створення об'єкта класу FileInputStream для читання файлу ExcelFileInputStream inputStream = новий FileInputStream (файл);Робоча книга guru99Workbook = null;// Знайдіть розширення файлу, розділивши ім'я файлу на підстановку та отримавши лише ім'я розширенняРядок fileExtensionName = fileName.substring (fileName.indexOf ("."));// Перевірка стану, якщо файл є файлом xlsxif (fileExtensionName.equals (". xlsx")) {// Якщо це файл xlsx, тоді створіть об'єкт класу XSSFWorkbookguru99Workbook = новий XSSFWorkbook (inputStream);}// Перевіряємо стан, якщо файлом є файл xlsще якщо (fileExtensionName.equals (". xls")) {// Якщо це файл xls, тоді створіть об'єкт класу XSSFWorkbookguru99Workbook = новий HSSFWorkbook (inputStream);}// Прочитати аркуш усередині книги за його назвоюАркуш guru99Sheet = guru99Workbook.getSheet (аркушName);return guru99Sheet;}}

ReadObject.java

пакетна операція;імпорт java.io.File;імпортувати java.io.FileInputStream;імпортувати java.io.IOException;імпортувати java.io.InputStream;імпортувати java.util.Properties;публічний клас ReadObject {Властивості p = new Властивості ();загальнодоступні властивості getObjectRepository () викидає IOException {// Читання файлу сховища об'єктівInputStream stream = new FileInputStream (новий файл (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// завантажуємо всі об'єктиp.load (потік);повернення p;}}

UIOperation.java

пакетна операція;імпортувати java.util.Properties;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;публічний клас UIOperation {Драйвер WebDriver;public UIOperation (драйвер WebDriver) {this.driver = драйвер;}public void perform (Properties p, String operation, String objectName, String objectType, String value) видає виняток {System.out.println ("");перемикач (operation.toUpperCase ()) {кейс "КЛІК":// Виконати клікdriver.findElement (this.getObject (p, objectName, objectType)). click ();перерва;кейс "SETTEXT":// Встановити текст на контроліdriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (значення);перерва;кейс "GOTOURL":// Отримати URL додаткаdriver.get (p.getProperty (value));перерва;справа "ОТРИМАТИ":// Отримати текст елементаdriver.findElement (this.getObject (p, objectName, objectType)). getText ();перерва;за замовчуванням:перерва;}}/ *** Знайти елемент за допомогою типу та значення об'єкта* @param стор* @param objectName* @param objectType* @ повернення* @throws Виняток* /private За допомогою getObject (Властивості p, String objectName, String objectType) викидає виняток {// Знайти за xpathif (objectType.equalsIgnoreCase ("XPATH")) {повернути By.xpath (p.getProperty (objectName));}// знайти за класомще якщо (objectType.equalsIgnoreCase ("ІМЯ КЛАСУ")) {повернути By.className (p.getProperty (objectName));}// знайти за іменемelse if (objectType.equalsIgnoreCase ("NAME")) {повернути By.name (p.getProperty (objectName));}// Знайти за cssінакше якщо (objectType.equalsIgnoreCase ("CSS")) {повернути By.cssSelector (p.getProperty (objectName));}// знайти за посиланнямінакше якщо (objectType.equalsIgnoreCase ("ПОСИЛАННЯ")) {повернути By.linkText (p.getProperty (objectName));}// знайти за частковим посиланнямelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {повернути By.partialLinkText (p.getProperty (objectName));} ще{викинути новий виняток ("Неправильний тип об'єкта");}}}

ExecuteTest.java

пакети testCases;імпортувати java.util.Properties;операція імпорту.ReadObject;операція імпорту. UIO операція;імпорт org.apache.poi.ss.usermodel.Row;імпорт org.apache.poi.ss.usermodel.Sheet;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.annotations.Test;імпортувати excelExportAndFileIO.ReadGuru99ExcelFile;публічний клас ExecuteTest {@ Тестpublic void testLogin () видає виняток {// Автоматично згенерований заглушок TODOWebDriver webdriver = новий FirefoxDriver ();Файл ReadGuru99ExcelFile = новий файл ReadGuru99ExcelFile ();Об'єкт ReadObject = новий ReadObject ();Властивості allObjects = object.getObjectRepository ();Операція UIOperation = нова UIOperation (веб-драйвер);// Прочитати аркуш ключових слівАркуш guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Знайти кількість рядків у файлі Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Створімо цикл над усіма рядками файлу Excel, щоб прочитати йогоfor (int i = 1; i " + row.getCell (0) .toString () + "Розпочато");}}}}

Після виконання вивід буде виглядати так -

Завантажте файли проекту Selenium для демонстрації у цьому посібнику

Гібридні рамки

Гібридна фреймворк у селені - це концепція, де ми використовуємо переваги як фреймворку, керованого ключовими словами, так і фреймворку, керованого даними. Це простий у використанні фреймворк, який дозволяє тестувальникам вручну створювати тестові кейси, просто переглядаючи ключові слова, тестові дані та сховище об’єктів без кодування у фреймворку.

Тут для ключових слів ми будемо використовувати файли Excel для ведення тестових кейсів, а для тестових даних - дані, постачальника фреймворку Testng.

У нашому гібридному фреймворці нам не потрібно нічого змінювати в фреймворку, керованому ключовими словами, тут нам просто потрібно замінити файл ExecuteTest.java на файл HybridExecuteTest.java.

Цей файл HybridExecuteTest містить весь код ключового слова, керованого концепцією постачальника даних.

Виглядатиме повне графічне зображення гібридного фреймворку

HybridExecuteTest.java

пакети testCases;імпортувати java.io.IOException;імпортувати java.util.Properties;операція імпорту.ReadObject;операція імпорту. UIO операція;імпорт org.apache.poi.ss.usermodel.Row;імпорт org.apache.poi.ss.usermodel.Sheet;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.annotations.DataProvider;імпорт org.testng.annotations.Test;імпортувати excelExportAndFileIO.ReadGuru99ExcelFile;відкритий клас HybridExecuteTest {WebDriver webdriver = нуль;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) видає виняток {// Автоматично згенерований заглушок TODOif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = новий FirefoxDriver ();}Об'єкт ReadObject = новий ReadObject ();Властивості allObjects = object.getObjectRepository ();Операція UIOperation = нова UIOperation (веб-драйвер);// Виклик функції виконання для виконання операції над інтерфейсом користувачаoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () кидає IOException {Об’єкт [] [] об’єкт = нуль;Файл ReadGuru99ExcelFile = новий файл ReadGuru99ExcelFile ();// Прочитати аркуш ключових слівАркуш guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Знайти кількість рядків у файлі Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Короткий зміст:

  • Ми можемо створити три типи тестової основи, використовуючи Selenium WebDriver.
  • Це дані, керовані даними, ключові слова та гібридна система тестування.
  • Ми можемо досягти структури, керованої даними, використовуючи постачальника даних TestNG.
  • У фреймворку, керованому ключовими словами, ключові слова записуються в деякі зовнішні файли, такі як файл Excel, а код Java викликає цей файл і виконує тестові випадки.
  • Гібридна структура - це поєднання ключових слів та даних.

Завантажте файли проекту Selenium для демонстрації у цьому посібнику