keyword driven framework selenium with examples
Ten kompleksowy samouczek dotyczący struktury opartej na słowach kluczowych wyjaśnia różne składniki struktury i jak je utworzyć w Selenium:
Ogólnie rzecz biorąc, ramy to zbiór wytycznych, których przestrzeganie przyniesie korzystne rezultaty.
Struktura oparta na słowach kluczowych to technika eksternalizacji słów kluczowych / akcji, które są używane w skrypcie w oddzielnym repozytorium obiektów (w tym przypadku jest to plik klasy Java), co da pozytywne rezultaty, takie jak zwiększona możliwość ponownego wykorzystania kodu, zmniejszona konserwacja skryptów, i większa przenośność.
=> Spójrz na przewodnik dla początkujących o selenie tutaj.
Czego się nauczysz:
- Co to jest struktura oparta na słowach kluczowych w Selenium?
- Składniki struktury testowania opartego na słowach kluczowych
- Wniosek
Co to jest struktura oparta na słowach kluczowych w Selenium?
Oto samouczki wideo:
Struktura oparta na słowach kluczowych - planowanie i projektowanie
najlepszy darmowy downloader muzyki mp3 dla Androida
Tworzenie struktury opartej na słowach kluczowych Część - I
Stworzenie struktury opartej na słowach kluczowych Część II
Składniki struktury testowania opartego na słowach kluczowych
Poniżej podano listę komponentów, które są zaangażowane w strukturę opartą na słowach kluczowych.
- Biblioteka funkcji
- Arkusz Excel do przechowywania słów kluczowych
- Zaprojektuj szablon przypadku testowego
- Repozytorium obiektów dla elementów / lokalizatorów
- Skrypty testowe lub skrypt sterownika
# 1) Biblioteka funkcji
Zwykle jest to plik klasy Java, w którym zdefiniowano słowa kluczowe. Innymi słowy, wszystkie akcje wykonywane w aplikacji są zdefiniowane jako metody zdefiniowane przez użytkownika (które są słowami kluczowymi) w pliku klasy biblioteki.
Na przykład:
Załóżmy, że nasza aplikacja musi wykonać następujące czynności w jednym lub kilku przypadkach testowych:
- Wprowadź adres URL.
- Kliknij element.
- Wpisz pole tekstowe.
Następnie, plik biblioteki jest tworzony poprzez zdefiniowanie indywidualnych metod dla wszystkich tych akcji, jak pokazano poniżej:
Tutaj tworzymy zdefiniowaną przez użytkownika metodę akcji - „Wprowadź adres URL”.
Nazwa podana dla metody zdefiniowanej przez użytkownika nazywa się a Słowo kluczowe.
Zatem tutaj „enter_URL” jest słowem kluczowym
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parametry :
kierowca - Sterownik jest inicjalizowany w klasie głównej i przekazywany tutaj.
Dane testowe - jest odczytywana z zewnętrznego źródła przez klasę główną i przekazywana tutaj.
Funkcjonować :
Tutaj, driver.get () - to funkcja Selenium, która wykonuje akcję „wprowadź adres URL”.
Keywords.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) Arkusz Excel do przechowywania słów kluczowych
Wszystkie metody zdefiniowane przez użytkownika wraz ze szczegółami dotyczącymi ich funkcjonalności powinny być wymienione w arkuszu programu Excel, aby użytkownik mógł zrozumieć, jakie słowo kluczowe zawiera plik biblioteki.
Arkusz Excel działa jako podsumowanie dla pliku biblioteki i staje się przydatny podczas tworzenia szablonu przypadku testowego, w którym użytkownik przegląda listę słów kluczowych arkusza Excela i wybiera odpowiednie słowo kluczowe dla każdej akcji w przypadku testowym.
Na przykład:
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) Zaprojektuj szablon przypadku testowego
Szablon przypadku testowego można utworzyć zgodnie z wygodą projektu. Nie ma określonej zasady tworzenia szablonu. Jest zaprojektowany w zależności od tego, jak bardzo projekt potrzebuje struktury do eksternalizacji. Eksternalizacja może dotyczyć tylko słów kluczowych, a czasami nawet dane testowe i elementy interfejsu użytkownika są również eksternalizowane.
Tworzony jest przykładowy szablon przypadku testowego:
W podanym przykładzie szablon jest tworzony w taki sposób, że:
- Każdy arkusz odpowiada przypadkowi testowemu, a ostatni arkusz zawiera „listę słów kluczowych”.
- Każdy wiersz odpowiada etapom testu TC.
- Każda kolumna zawiera parametry niezbędne dla każdej akcji.
Jak wypełnić szablon przypadku testowego:
# 1) Z dostarczonego arkusza przypadku testowego przeczytaj każdy przypadek testowy i odpowiadające mu kroki testowe. Dla każdego kroku testowego znajdź akcję i znajdź odpowiednie słowo kluczowe w pliku biblioteki.
#dwa) Po dopasowaniu akcji do słowa kluczowego wypełnij szablon przypadku testowego w kolejności przypadków testowych, a także podaj pozostałe wymagane parametry, jeśli to konieczne.
Waniliowy prywatny serwer World of Warcraft
# 4) Repozytorium obiektów dla lokalizatorów
Lokalizator interfejsu użytkownika można zidentyfikować, a jego wartość można podać w szablonie przypadku testowego lub przechowywać w oddzielnym repozytorium obiektów.
W poniższym przykładzie właściwości identyfikacji elementu
- Typ lokalizatora - Użyta technika identyfikacji to id, Xpath, ClassName itp.
- Wartość lokalizatora - Wartość tego atrybutu - Na przykład: Jeśli jego atrybut Id, to wartość id i tak dalej.
Innym sposobem jest zachowanie w repozytorium obiektów i podanie nazwy obiektu w arkuszu Excel.
- Typ lokalizatora - Użyta technika identyfikacji to id, Xpath, ClassName itp.
- Nazwa lokalizatora –Nazwa obiektu z repozytorium obiektów, w którym przechowywana jest wartość lokalizatora. Na przykład, Jeśli repozytorium przechowuje wartość Xpath elementu z ObjectName jako „Username”, wówczas LocatorName jest wymieniane jako „UserName”.
UWAGA: Zgodnie z LocatorType wymienionym w arkuszu Excela, jego wartość powinna być przechowywana w repozytorium obiektów. Na przykład: Jeśli Xpath jest określony jako LocatorType, to Repozytorium powinno przechowywać Xpath tego elementu, jeśli identyfikator jest określony jako Locatortype, to identyfikator powinien być przechowywany i tak dalej.
# 5) Skrypty testowe lub skrypt sterownika
To jest główny skrypt, który czyta całą zawartość arkusza Excela i wykonuje odpowiednią akcję. Skrypt jest zaprojektowany w oparciu o sposób tworzenia szablonu.
W naszym przypadku, ponieważ każdy arkusz testowy działa jak przypadek testowy, a każdy wiersz jako krok testowy, skrypt sterownika można utworzyć, wykonując iterację między arkuszami, a następnie wierszami.
W każdym wierszu odczytywane jest słowo kluczowe i wykonywana jest odpowiadająca mu metoda w pliku biblioteki i tak dalej. Trwa to do momentu wykonania wszystkich kroków testowych w przypadku testowym. Następnie przechodzi do następnego przypadku / arkusza testowego i wykonuje go.
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;testcaseWniosek
Tak więc po utworzeniu frameworka można go ponownie wykorzystać w wielu przypadkach testowych / projektach. W ten sposób redukuje roboczogodziny związane z tworzeniem skryptu automatyzacji dla każdego projektu.
W następnym rozdziale omówimy tworzenie platformy opartej na hybrydach, która jest połączeniem struktury opartej na słowach kluczowych i opartej na danych.
=> Przeczytaj serię szkoleń Easy Selenium.
rekomendowane lektury
- Data Driven Framework w Selenium WebDriver przy użyciu Apache POI
- Jak działa testowanie oparte na danych (przykłady QTP i selenu)
- Wprowadzenie do JUnit Framework i jego wykorzystanie w skrypcie Selenium - Samouczek Selenium # 11
- Co to jest struktura hybrydowa w selenie?
- Selenium Find Element By Text Samouczek z przykładami
- 30+ najlepszych samouczków dotyczących selenu: naucz się selenu z prawdziwymi przykładami
- Tworzenie Selenium Framework i dostęp do danych testowych z Excela - Samouczek Selenium # 21
- Słowo kluczowe „this” w języku Java: samouczek z przykładami kodu