keyword driven framework selenium with examples
Цей вичерпний посібник з ключових слів, що керується ключовими словами, пояснює різні компоненти фреймворку та як його створити в селені:
Загалом, Framework - це набір керівних принципів, які при дотриманні дадуть корисні результати.
Управління ключовими словами - це техніка для екстерналізації ключових слів / дій, які використовуються в сценарії в окремому сховищі об’єктів (тут це файл класу Java), що дасть позитивні результати, такі як збільшення повторного використання коду, зменшення обслуговування скриптів, і вища портативність.
=> Погляньте тут на керівництво для початківців селену.
Що ви дізнаєтесь:
- Що таке структура, заснована на ключових словах у селені?
- Компоненти основи тестування на основі ключових слів
- Висновок
Що таке структура, заснована на ключових словах у селені?
Ось відео-підручники:
Управління ключовими словами - план та дизайн
Створення частини, що керується ключовими словами - I
Створення основи, що керується ключовими словами - Частина - II
Компоненти основи тестування на основі ключових слів
Нижче наведено перелік компонентів, які беруть участь у структурі, керованій ключовими словами.
- Бібліотека функцій
- Таблиця Excel для зберігання ключових слів
- Шаблон тестування дизайну
- Сховище об’єктів для елементів / локаторів
- Тестові скрипти або сценарій драйвера
# 1) Бібліотека функцій
Зазвичай це файл класу Java, де визначаються ключові слова. Іншими словами, усі дії, що виконуються з додатком, визначаються як визначені користувачем методи (які є ключовими словами) у файлі класу бібліотеки.
Наприклад:
Припустимо, що наш додаток повинен виконати такі дії в одному або декількох тестових випадках:
- Введіть URL-адресу.
- Клацніть на елемент.
- Введіть у текстовому полі.
Потім, файл бібліотеки створюється шляхом визначення окремих методів для всіх цих дій, як показано нижче:
Тут ми створюємо визначений користувачем метод дії - „Ввести URL-адресу“.
Ім'я, надане для визначеного користувачем методу, називається a Ключове слово.
Отже, тут «enter_URL» - це ключове слово
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Параметри :
водій - Драйвер ініціалізовано в основному класі і передано сюди.
Тестові дані - читається із зовнішнього джерела Main Class і передає його сюди.
Функція :
Ось, driver.get () - це функція селену, яка виконує дію «ввести URL».
Ключові слова.java
package Keywords.Defined; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; // driver object is declared //method for entering URL – Keyword is ‘enter_URL’ public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); } //method for typing action – Keyword is ‘type’ public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) { driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); } //method for click action – Keyword is ‘click’ public void click(WebDriver driver,String ObjectName, String locatorType) { driver.findElement(this.getObject(ObjectName,locatorType)).click(); } }
# 2) Аркуш Excel для зберігання ключових слів
Усі визначені користувачем методи разом із деталями його функціональних можливостей повинні бути зазначені в аркуші Excel, щоб користувач міг зрозуміти, яке ключове слово містить файл бібліотеки.
Аркуш Excel діє як підсумок для бібліотечного файлу і стає корисним під час створення шаблону тестового кейсу, де користувач переглядає список ключових слів Excel та обирає відповідне ключове слово для кожної дії у тестовому випадку.
Наприклад:
package Keywords.Defined; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; public void enter_URL(WebDriver driver,String TestData) throws IOException{ driver.get(TestData); } public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); //driver.findElement(By.xpath('//')).sendKeys(testdata); } public void wait(WebDriver driver,String ObjectName, String locatorType) throws IOException{ WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.visibilityOf(driver.findElement(this.getObject(ObjectName,locatorType)))); } public void click(WebDriver driver,String ObjectName, String locatorType) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).click(); } public String get_currentURL(WebDriver driver){ String URL = driver.getCurrentUrl(); System.out.println('print URL '+URL); return URL; } By getObject(String ObjectName, String locatorType) throws IOException{ File file = new File(path+'\Externals\Object Repository.properties'); FileInputStream fileInput = new FileInputStream(file); Properties prop = new Properties(); //find by xpath if(locatorType.equalsIgnoreCase('XPATH')){ return By.xpath(prop.getProperty(ObjectName)); } //find by class else if(locatorType.equalsIgnoreCase('CLASSNAME')){ return By.className(prop.getProperty(ObjectName)); } //find by name else if(locatorType.equalsIgnoreCase('NAME')){ return By.name(prop.getProperty(ObjectName)); } //Find by css else if(locatorType.equalsIgnoreCase('CSS')){ return By.cssSelector(prop.getProperty(ObjectName)); } //find by link else if(locatorType.equalsIgnoreCase('LINK')){ return By.linkText(prop.getProperty(ObjectName)); } //find by partial link else if(locatorType.equalsIgnoreCase('PARTIALLINK')){ return By.partialLinkText(prop.getProperty(ObjectName)); } return null; } }
# 3) Шаблон тестового кейсу для дизайну
Шаблон тесту можна створити відповідно до зручності проекту. Не існує особливого правила створення шаблону. Він розроблений залежно від того, наскільки проект потребує фреймворку для екстерналізації. Екстерналізація може бути лише для ключових слів, а іноді навіть тестові дані та елементи інтерфейсу також екстерналізуються.
Створюється зразок шаблону тестового кейсу:
У наведеному прикладі шаблон створюється таким чином, що:
- Кожен аркуш відповідає тестовому випадку, а останній аркуш містить той, що містить 'Список ключових слів'.
- Кожен рядок відповідає етапам перевірки ТК.
- Кожна колонка - це параметри, необхідні для кожної дії.
Як заповнити шаблон тесту:
# 1) З наданого аркуша тестових кейсів прочитайте кожен тестовий кейс та відповідні кроки тестування. Для кожного кроку тесту знайдіть дію та знайдіть відповідне ключове слово з файлу бібліотеки.
# два) Після відповідності дії ключовому слову заповніть шаблон тесту в порядку тесту, а також передайте інші необхідні параметри за необхідності.
# 4) Сховище об’єктів для локаторів
Локатор інтерфейсу користувача може бути ідентифікований, а його значення може бути згадане у шаблоні тестового випадку або збережене в окремому сховищі об’єктів.
У наведеному нижче прикладі властивості ідентифікації елемента
- Тип локатора - Використовувана техніка ідентифікації - id, Xpath, ClassName тощо.
- Значення локатора - Значення цього атрибута - Наприклад: Якщо це атрибут Id, то значення id тощо.
Інший спосіб полягає у підтримці в сховищі об’єктів та згадці імені об’єкта на аркуші Excel.
- Тип локатора - Використовувана техніка ідентифікації - id, Xpath, ClassName тощо.
- Назва локатора –Ім'я об’єкта зі сховища об’єкта, де зберігається значення локатора. Наприклад, Якщо в сховищі зберігається значення Xpath елемента з Іменем об'єкта як 'Ім'я користувача', тоді LocatorName згадується як 'Ім'я користувача'.
ПРИМІТКА: Відповідно до LocatorType, згаданого в аркуші Excel, його значення слід зберігати в сховищі об’єктів. Наприклад: Якщо Xpath вказано як LocatorType, тоді Репозиторій повинен зберігати Xpath цього елемента, якщо ідентифікатор вказаний як Locatortype, тоді ідентифікатор слід зберігати тощо.
# 5) Тестові скрипти або сценарій драйвера
Це основний сценарій, який читає весь вміст аркуша Excel і виконує відповідну дію. Сценарій розроблений на основі того, як створюється шаблон.
У нашому випадку, оскільки кожен тестовий аркуш виступає тестовим прикладом, а кожен рядок - тестовим етапом, сценарій драйвера може бути створений шляхом ітерації між аркушами, а потім рядками.
У кожному конкретному рядку читається ключове слово та виконується відповідний метод у файлі бібліотеки тощо. Це триває доти, доки не будуть виконані всі етапи тесту в тестовому випадку. Потім він переходить до наступного тесту / аркуша та виконує його.
як відкрити .eps файли -
package Automation.KeywordFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; import java.util.Properties; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Reporter; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.testng.asserts.Assertion; import Keywords.Defined.Assertions; import Keywords.Defined.Keywords; public class IrctcLogic { WebDriver driver; String path = System.getProperty('user.dir'); Keywords keyword = new Keywords(); Assertions assertion = new Assertions(); @Test public void readExcelandexecute() throws IOException, InterruptedException{ //From excelfile String excelFilePath = path+'\Externals\Test Cases.xlsx'; FileInputStream fileInputStream = new FileInputStream(excelFilePath); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); int testcasescount = workbook.getNumberOfSheets()-1; System.out.println('Total test cases :'+testcasescount); for (int testcase=0;testcaseВисновок
Таким чином, як тільки фреймворк буде створений, він буде повторно використаний для декількох тестових кейсів / проектів. Таким чином, це зменшує людські години створення сценарію автоматизації для кожного проекту.
У наступному розділі ми обговоримо створення гібридного фреймворку, який є комбінацією фреймворку, керованого ключовими словами, та фреймворку, керованого даними.
=> Прочитайте навчальну серію Easy Selenium.
Рекомендована література
- Data Driven Framework у Selenium WebDriver з використанням Apache POI
- Як працює тестування на основі даних (приклади QTP та селену)
- Вступ до JUnit Framework та його використання в сценарії селену - Підручник з селену No11
- Що таке гібридні рамки в селені?
- Знайти елемент селену за допомогою підручника з тексту з прикладами
- 30+ найкращих підручників із селену: вивчіть селен на реальних прикладах
- Створення Framework селену та доступ до тестових даних з Excel - Підручник селену №21
- Ключове слово Java 'this': Підручник із прикладами коду