För att förstå tillägg kan vi först förstå de tre pelarna i selen IDE
- Åtgärd: Vilken åtgärd du utför på UI-skärmen
- Bedömare / påstående: Vilken verifiering du gör på data du får från användargränssnittet
- Locator Strategy: Hur kan vi hitta elementet i användargränssnittet.
Nu har Selen IDE ett mycket moget bibliotek med massor av åtgärder, påståenden / bedömare och lokaliseringsstrategier.
Men ibland måste vi lägga till lite mer funktionalitet till det för våra projektkrav. I den situationen kan vi utöka detta bibliotek genom att lägga till våra anpassade tillägg. Dessa anpassade tillägg kallas 'User Extension'.
Vi behöver till exempel en åtgärd som kan konvertera texten till versaler innan den fylls i ett webbelement. Du kan inte hitta den här åtgärden i standardhandlingsbiblioteket. I sådant fall kan du skapa din egen "User Extension". I denna handledning lär vi oss hur man skapar användartillägg för att konvertera text till versaler
Krav för att skapa Selenium-användartillägg:
För att skapa användartillägg för Selen IDE måste vi känna till grundkonceptet för JavaScript och Java Script-prototypobjektkoncept.
För att skapa ditt användartillägg måste du skapa Java-skriptmetoder och lägga till dem i prototypen för selenobjekt och prototyp för PageBot-objekt.
Hur Selenium IDE känner igen användartillägg?
Efter att ha lagt till User Extension till Selen IDE när vi startar Selen IDE, laddas alla dessa tillägg i javascript-prototyp och Selen IDE känner igen dem med deras namn.
Hur man skapar användartillägg
Steg 1) Åtgärd - alla åtgärder startas av "gör", dvs. om åtgärden är för versaler än dess namn kommer att vara doTextUpperCase. När vi lägger till den här åtgärdsmetoden i Selen IDE skapar Selen IDE själv en väntemetod för den här åtgärden. Så i det här fallet när vi skapar doTextUpperCase- åtgärd skapar Selen IDE en motsvarande väntefunktion som TextUpperCaseAndWait . Det kan acceptera två parametrar
Exempel: Textåtgärd i versaler
Selenium.prototype.doTextUpperCase = funktion (locator, text) {// Här kan findElement i sig hantera alla typer av locator (xpath, css, name, id, className), vi behöver bara skicka locator-textenvar element = this.page (). findElement (locator);// Skapa texten för att skrivatext = text.toUpperCase ();// Ersätt elementtexten med den nya textenthis.page (). ersätt Text (element, text);};
Steg 2) Bedömare / påstående - Alla bedömare som är registrerade i prototyp av selenobjekt kommer att vara prefix
med "get" eller "är" Ex. getValueFromCompoundTable, isValueFromCompoundTable. Det kan acceptera två parametrar, en för mål och en annan för värdefält i testfall.
För varje bedömare kommer motsvarande verifieringsfunktioner att föregås av "verifiera", "påstå" och väntefunktionsprefixet med "vänta för"
Exempel: För bedömare av versaler
Selenium.prototype.assertTextUpperCase = funktion (locator, text) {// Alla lokaliseringsstrategier hanteras automatiskt av "findElement"var element = this.page (). findElement (locator);// Skapa texten för att verifieratext = text.toUpperCase ();// Få det faktiska elementvärdetvar actualValue = element.value;// Se till att det verkliga värdet matchar det förväntadeAssert.matches (expectValue, actualValue);};Selenium.prototype.isTextEqual = funktion (lokaliserare, text) {returnera this.getText (locator) .värde === text;};Selenium.prototype.getTextValue = funktion (lokaliserare, text) {returnera this.getText (locator) .value;};
Steg 3) Locatorstrategi - Om vi vill skapa en egen funktion för att hitta ett element då
vi måste utöka PageBot-prototypen med en funktion med prefixet "locateElementBy."
Det tar två parametrar, den första kommer att vara lokaliseringssträng och den andra kommer att vara dokumentet
där det måste sökas.
Exempel: För lokalisering av versaler
// "inDocument" är ett dokument du söker efter.PageBot.prototype.locateElementByUpperCase = funktion (text, inDocument) {// Skapa texten du vill söka eftervar expectValue = text.toUpperCase ();// Gå igenom alla element och leta efter sådana som har// ett värde === vårt förväntade värdevar allElements = inDocument.getElementsByTagName ("*");// Denna stjärna '*' är ett slags reguljärt uttryck den kommer att gå igenom varje element (i HTML DOM har varje element säkert ett taggnamn som , ,,