keyword driven framework selenium with examples
Овај свеобухватни водич о оквиру вођеном кључним речима објашњава различите компоненте оквира и како га створити у селенијуму:
Генерално, Фрамеворк је скуп смерница, које ће, када се следе, дати корисне резултате.
Оквир вођен кључним речима је техника екстернализације кључних речи / радњи које се користе у скрипти у засебном Спремишту објеката (овде је датотека Јава класе), што ће дати позитивне исходе попут повећане поновне употребе кода, смањеног одржавања скрипти, и већа преносивост.
=> Овде погледајте водич за почетнике селена.
Шта ћете научити:
- Шта је оквир који се у селенију покреће кључним речима?
- Компоненте оквира за тестирање на основу кључних речи
- Закључак
Шта је оквир који се у селенију покреће кључним речима?
Ево водича за видео:
Оквир вођен кључним речима - план и дизајн
Питања и одговори за пословне аналитичаре
Стварање дела вођеног кључним речима - И
Стварање дела вођеног кључним речима - ИИ
Компоненте оквира за тестирање на основу кључних речи
Доље је дата листа компонената које су укључене у Оквир вођен кључним речима.
- Библиотека функција
- Екцел табела за чување кључних речи
- Предложак за тест случаја за дизајн
- Спремиште објеката за елементе / локаторе
- Тест скрипте или скрипте за управљачке програме
# 1) Библиотека функција
Ово је обично датотека Јава класе у којој су дефинисане кључне речи. Другим речима, све радње које се извршавају на апликацији дефинисане су као кориснички дефинисане методе (које су кључне речи) у датотеци класе библиотеке.
На пример:
који је најбољи мењач гласа
Претпоставимо да наша апликација мора да изврши следеће радње у једном или више тест случајева:
- Унесите УРЛ.
- Кликните на елемент.
- Укуцајте у оквир за текст.
Онда, датотека библиотеке креира се дефинисањем појединачних метода за све ове радње како је приказано доле:
Овде креирамо кориснички дефинисани метод за радњу - „Унеси УРЛ“.
Име предвиђено за кориснички дефинисану методу назива се а Кључна реч.
Дакле, овде је „ентер_УРЛ“ кључна реч
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Параметри :
возач - Возач је иницијализован у главној класи и прослеђен овде.
Тест подаци - чита га из спољног извора Главна класа и предаје овде.
Функција :
Ево, дривер.гет () - је функција селена која врши акцију „унесите УРЛ“.
Кеивордс.јава
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) Екцел лист за чување кључних речи
Сви кориснички дефинисани методи, заједно са детаљима о њиховој функционалности, треба да буду наведени у екцел листу како би корисник могао да разуме коју кључну реч садржи датотека библиотеке.
Екцел лист делује као резиме за датотеку библиотеке и постаје користан током креирања шаблона тест случаја, где корисник прегледава листу кључних речи екцел листа и бира одговарајућу Кључну реч за сваку акцију у тест случају.
На пример:
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) Спремиште објеката за локаторе
Локатер корисничког интерфејса се може идентификовати и његова вредност може бити наведена или у предлошку за тест случај или одржавана у засебном спремишту објеката.
У доњем примеру, својства идентификације елемента
- Тип локатора - Техника идентификације која се користи је ид, Кспатх, ЦлассНаме итд.
- Вредност локатора - Вредност тог атрибута - На пример: Ако је његов атрибут Ид, онда је вредност ид и тако даље.
Други начин је одржавање у Спремишту објеката и помињање Имена објекта у Екцел табели.
- Тип локатора - Техника идентификације која се користи је ид, Кспатх, ЦлассНаме итд.
- Име локатора –Име објекта из спремишта објекта, где се чува вредност локатора. На пример, Ако спремиште садржи вредност Кспатх елемента са ОбјецтНаме као „Корисничко име“, тада се ЛоцаторНаме помиње као „УсерНаме“.
БЕЛЕШКА: Према ЛоцаторТипе-у поменутом у екцел листу, његова вредност треба да се чува у спремишту објеката. На пример: Ако је Кспатх наведен као ЛоцаторТипе, тада би Спремиште требало да складишти Кспатх тог елемента, ако је ид наведен као Лоцатортипе, онда би тај ИД требало да буде сачуван и тако даље.
# 5) Тест скрипте или скрипте за управљачке програме
Ово је главна скрипта која чита сав садржај Екцел листа и изводи одговарајућу радњу. Скрипта је дизајнирана на основу начина израде предлошка.
У нашем случају, пошто сваки тестни лист делује као тестни случај, а сваки ред као тестни корак, скрипта покретачког програма може се креирати итерацијом по листовима, а затим у редовима.
како да погледам кмл датотеку
У сваком одређеном реду чита се кључна реч и извршава се њен одговарајући метод у датотеци библиотеке итд. То се наставља све док се не изврше сви тест кораци у тест случају. Затим се прелази на следећи тест случај / лист и извршава га.
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Закључак
Дакле, кад се оквир једном створи, он се може поново користити за више тест случајева / пројеката. На тај начин смањује радне сате за стварање скрипте за аутоматизацију за сваки пројекат.
У следећем поглављу разговараћемо о стварању хибридног оквира који је комбинација оквира вођеног кључним речима и оквира вођеног подацима.
=> Прочитајте серију Еаси Траининг за селен.
Препоручено читање
- Оквир вођен подацима у програму Селениум ВебДривер који користи Апацхе ПОИ
- Како функционише тестирање на основу података (примери КТП и селена)
- Увод у ЈУнит Фрамеворк и његову употребу у сценаријуму Селениум - Водич за селен # 11
- Шта је хибридни оквир у селену?
- Водич за текст помоћу примера у тексту за проналажење селена
- 30+ најбољих водича за селен: научите селен на стварним примерима
- Израда оквира за селенијум и приступање тест подацима из програма Екцел - Туториал бр. 21
- Јава 'тхис' кључна реч: Водич са примерима кода