Selenium Kernextensies (User-Extensions.js)
Om extensies te begrijpen, moeten we eerst de drie pijlers van Selenium IDE begrijpen
- Actie: welke bewerking u uitvoert op het UI-scherm
- Beoordelaars/Bewering: Welke verificatie u uitvoert op de gegevens die u van de UI ontvangt
- Locatorstrategie: hoe kunnen we het element in de gebruikersinterface vinden.
Nu, Selenium IDE heeft een zeer volwassen bibliotheek met veel acties, beweringen/beoordelaars en locatorstrategieën.
Maar soms moeten we er wat meer functionaliteit aan toevoegen voor onze projectvereisten. In die situatie kunnen we deze bibliotheek uitbreiden door onze aangepaste extensies toe te voegen. Deze aangepaste extensies worden 'Gebruikersextensie' genoemd.
We hebben bijvoorbeeld een actie nodig die de tekst naar hoofdletters kan converteren voordat deze in een webelement wordt ingevuld. U kunt deze actie niet vinden in de standaardactiebibliotheek. In dat geval kunt u uw eigen 'Gebruikersextensie' aanmaken. In deze zelfstudie leren we hoe u een gebruikersextensie kunt maken om tekst naar hoofdletters te converteren
Vereiste om te creëren Selenium gebruikersextensie
Om een gebruikersextensie aan te maken voor Selenium IDE, we moeten het basisconcept kennen van JavaScript en Java Scriptprototype objectconcept.
Om uw gebruikersextensie te maken, moet u creëren Java scriptmethoden en voeg deze toe aan het Selenium-objectprototype en het PageBot-objectprototype.
Hoe Selenium IDE herkent gebruikersextensie?
Na het toevoegen van een gebruikersextensie aan Selenium IDE als we beginnen Selenium IDE, al deze extensies in het JavaScript-prototype worden geladen, en Selenium IDE herkent ze aan hun naam.
Hoe u een gebruikersextensie kunt maken
Stap 1) Actie– alle acties worden gestart door “do”, dwz als de actie voor hoofdletters is, dan zal de naam dat zijn doTextUpperCase. Wanneer we deze actiemethode toevoegen aan Selenium SDI, Selenium IDE zal zelf een wachtmethode voor deze actie creëren. Dus in dit geval wanneer we creëren doTextUpperCase actie, Selenium IDE zal een overeenkomstige wachtfunctie creëren als TekstHoofdletterAndWacht. Het kan twee parameters accepteren
Voorbeeld: tekstactie in hoofdletters
Selenium.prototype.doTextUpperCase = function(locator, text) { // Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text var element = this.page().findElement(locator); // Create the text to type text = text.toUpperCase(); // Replace the element text with the new text this.page().replaceText(element, text); };
Stap 2) Beoordelaars/bewering- Alle beoordelaars die in het Selenium-objectprototype zijn geregistreerd, krijgen het voorvoegsel
door “krijgen” of “is” Bijv. getValueFromCompoundTable , isValueFromCompoundTable . Het kan twee parameters accepteren, één voor het doel en de andere voor het waardeveld in de testcase.
Voor elke beoordelaar zijn er overeenkomstige verificatiefuncties, voorafgegaan door “verify”, “assert” en de wachtfunctie als voorvoegsel door “waitFor”
Voorbeeld: voor beoordelaars van hoofdletters
Selenium.prototype.assertTextUpperCase = function(locator, text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to verify text = text.toUpperCase(); // Get the actual element value var actualValue = element.value; // Make sure the actual value matches the expected Assert.matches(expectedValue, actualValue); }; Selenium.prototype.isTextEqual = function(locator, text) { return this.getText(locator).value===text; }; Selenium.prototype.getTextValue = function(locator, text) { return this.getText(locator).value; };
Stap 3) Locatiestrategie- Als we onze eigen functie willen creëren om een element te lokaliseren, dan
we moeten het PageBot-prototype uitbreiden met een functie met het voorvoegsel 'locateElementBy'.
Er zijn twee parameters nodig: de eerste is de locatorstring en de tweede is het document
waar er gezocht moet worden.
Voorbeeld: voor tekstzoeker in hoofdletters
// The "inDocument" is a document you are searching. PageBot.prototype.locateElementByUpperCase = function(text, inDocument) { // Create the text to search for var expectedValue = text.toUpperCase(); // Loop through all elements, looking for ones that have // a value === our expected value var allElements = inDocument.getElementsByTagName("*"); // This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element. for (var i = 0; i < allElements.length; i++) { var testElement = allElements[i]; if (testElement.innerHTML && testElement.innerHTML === expectedValue) { return testElement; } } return null; };
Hoe gebruik ik de nieuw gemaakte kernextensie?
- Ga naar Selenium IDE
Klik op Opties -> Opties…
- Selecteer in het gedeelte Algemeen de locatie van het nieuw gemaakte bestand Selenium Kernuitbreiding
- Klik op OK en start opnieuw op Selenium IDE
- U vindt de extensie in de opdrachtenlijst
Hier is een lijst met populaire extensies/plug-ins die worden gebruikt Selenium IDE
Naam | Doel |
---|---|
Favorieten | Om een testpakket als favoriet te markeren en met één klik uit te voeren |
Flex-piloot X | Voor op Flex gebaseerde automatisering |
FlexMonkium | Voor op Adobe Flex gebaseerd opnemen en afspelen Testen in Selenium IDE |
Bestandsregistratie | Voor het opslaan van logs in een bestand |
Flow Control | Om de testuitvoeringsstroom te controleren |
Markeer elementen | Om een webbesturingselement te markeren |
Impliciete wachttijd | Wachten op een element gedurende een bepaalde tijdslimiet |
Screenshot bij mislukken | Maak een screenshot bij een fout |
Test resultaten | Bespaar Testgeval resultaat voor een testsuite in één klik |
Je kunt dit allemaal en nog veel meer krijgen SeleniumDownloadsectie van de officiële HQ-site
http://docs.seleniumhq.org/download/
Samenvatting
- Er zijn drie delen van Selenium IDE, Actie, Beoordelaars/Bewering, Locatorstrategie.
- Gebruikersextensie wordt aangemaakt wanneer Selenium IDE voldoet niet aan de huidige vereisten.
- Om een gebruikersextensie te maken, moet u JavaScript toevoegen aan het Selenium-objectprototype.
- Nadat de extensie is gemaakt, is het vereist om deze toe te voegen Selenium IDE en start IDE opnieuw.
Download de Selenium Kernextensie die in deze zelfstudie wordt gebruikt