keyword driven framework selenium with examples
Този изчерпателен урок за рамка, управлявана от ключови думи, обяснява различни компоненти на рамката и как да създадете такава в селен:
Като цяло Framework е набор от насоки, които при спазване ще дадат полезни резултати.
Управляваната от ключови думи рамка е техника за екстернализиране на ключови думи / действия, които се използват в скрипта в отделно хранилище на обекти (тук това е файл на Java Class), което ще даде положителни резултати като повишена повторна употреба на кода, намалена поддръжка на скриптове, и по-висока преносимост.
=> Погледнете тук ръководството за начинаещи за селен.
Какво ще научите:
- Какво представлява рамката, управлявана от ключови думи в селена?
- Компоненти на рамката за тестване, управлявана от ключови думи
- Заключение
Какво представлява рамката, управлявана от ключови думи в селена?
Ето видео уроците:
Управлявана от ключови думи рамка - план и дизайн
Създаване на рамкова част, управлявана от ключови думи - I
Създаване на ключова ключова дума - II
Компоненти на рамката за тестване, управлявана от ключови думи
По-долу е даден списъкът на компонентите, които участват в рамката за управление на ключови думи.
- Библиотека с функции
- Excel Sheet за съхранение на ключови думи
- Шаблон за тестване на дизайн
- Хранилище на обекти за елементи / локатори
- Тестови скриптове или драйверен скрипт
# 1) Библиотека с функции
Това обикновено е файл на Java Class, където са дефинирани ключовите думи. С други думи, всички действия, които се изпълняват с приложението, се дефинират като дефинирани от потребителя методи (които са ключови думи) във файла на библиотечния клас.
Например:
Нека приемем, че нашето приложение трябва да извърши следните действия в един или повече тестови случаи:
разлика между системното тестване и теста за приемане от потребителя
- Въведете URL адреса.
- Щракнете върху елемент.
- Въведете в текстово поле.
Тогава, библиотечният файл се създава чрез дефиниране на отделни методи за всички тези действия, както е показано по-долу:
Тук създаваме дефиниран от потребителя метод за действието - ‘Enter URL’.
Името, предоставено за дефинирания от потребителя метод, се нарича a Ключова дума.
И така, тук ‘enter_URL’ е ключовата дума
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Параметри :
шофьор - Драйверът е инициализиран в основния клас и е предаден тук.
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) Шаблон за тестов дизайн
Шаблон за тестови случаи може да бъде създаден според удобството на проекта. Няма специално правило за създаване на шаблон. Той е проектиран в зависимост от това доколко проектът се нуждае от рамката, за да се екстернализира. Екстернализацията може да е само за ключови думи или понякога дори тестовите данни и елементите на потребителския интерфейс също са екстернализирани.
Създава се примерен шаблон за тестов случай:
В дадения пример шаблонът е създаден по такъв начин, че:
- Всеки лист съответства на тест, а последният лист е този, който съдържа „Списък с ключови думи“.
- Всеки ред съответства на тестовите стъпки на TC.
- Всяка колона е параметрите, които са необходими за всяко действие.
Как да попълните шаблона на тестовия случай:
# 1) От предоставения лист на тестовия пример прочетете всеки тестов случай и съответните стъпки от него. За всяка тестова стъпка намерете действието и намерете съответната ключова дума от библиотечния файл.
# две) След като действието е съвпаднато с ключовата дума, попълнете шаблона за тестов случай в реда на тестовия случай и при необходимост предайте и другите необходими параметри.
най-доброто премахване на зловреден софтуер за Windows 10
# 4) Хранилище на обекти за локатори
Локаторът на потребителския интерфейс може да бъде идентифициран и неговата стойност може да бъде спомената в шаблона на тестовия случай или поддържана в отделно хранилище на обекти.
В примера по-долу свойствата за идентификация на елемента
- Тип локатор - Използваната техника за идентификация е id, Xpath, ClassName и др.
- Стойност на локатора - Стойност на този атрибут - Например: Ако това е атрибут Id, тогава стойността на id и т.н.
Друг начин е да поддържате в хранилището на обекти и да споменавате името на обекта в листа на Excel.
- Тип локатор - Използваната техника за идентификация е id, Xpath, ClassName и др.
- Име на локатора –Името на обекта от хранилището на обекти, където се съхранява стойността на локатора. Например, Ако хранилището съдържа стойността Xpath на елемент с ObjectName като „Потребителско име“, тогава LocatorName се споменава като „UserName“.
ЗАБЕЛЕЖКА: Според LocatorType, споменат в Excel листа, стойността му трябва да се съхранява в хранилището на обекти. Например: Ако Xpath е посочен като LocatorType, то хранилището трябва да съхранява Xpath на този елемент, ако идентификаторът е посочен като Locatortype, тогава идентификаторът трябва да се съхранява и т.н.
# 5) Тестови скриптове или скрипт за драйвери
Това е основният скрипт, който чете цялото съдържание на Excel листа и изпълнява съответното действие. Скриптът е проектиран въз основа на начина на създаване на шаблона.
В нашия случай, тъй като всеки тестов лист действа като тестов случай, а всеки ред като тестова стъпка, скриптът на драйвера може да бъде създаден чрез итерация през листове и след това редове.
Във всеки конкретен ред се чете ключова дума и се изпълнява съответният метод във файла на библиотеката и т.н. Това продължава, докато не бъдат изпълнени всички тестови стъпки в тестовия случай. След това преминава към следващия тестов случай / лист и го изпълнява.
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 Training за селен.
Препоръчително четене
- Управлявана от данни рамка в Selenium WebDriver, използваща Apache POI
- Как работи тестването, управлявано от данни (примери за QTP и селен)
- Въведение в JUnit Framework и нейното използване в Selenium Script - Селен Урок # 11
- Какво представлява хибридната рамка в селена?
- Намиране на елемент от селен чрез урок с текст с примери
- 30+ най-добри урока за селен: Научете селен с реални примери
- Създаване на Framework Selenium и достъп до тестови данни от Excel - Урок № 21 за Selenium
- Java 'this' Ключова дума: Урок с примери за кодове