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 gegevens die u uit de gebruikersinterface krijgt
- Locator-strategie: hoe kunnen we het element in de gebruikersinterface vinden.
Nu heeft Selenium IDE een zeer volwassen bibliotheek met tal van acties, beweringen / assessoren 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 'User Extension' aanmaken. In deze zelfstudie leren we hoe u een gebruikersextensie kunt maken om tekst naar hoofdletters te converteren
Vereiste om een Selenium-gebruikersextensie te maken:
Om een gebruikersextensie voor Selenium IDE te maken, moeten we het basisconcept van JavaScript- en Java Script-prototypeobjectconcept kennen.
Om uw gebruikerextensie te maken, moet u Java-scriptmethoden maken en deze toevoegen aan het prototype van het selenium-object en het prototype van het PageBot-object.
Hoe herkent Selenium IDE User Extension?
Na het toevoegen van een gebruikersextensie aan Selenium IDE wanneer we Selenium IDE starten, worden al deze extensies in JavaScript-prototype geladen en herkent Selenium IDE ze bij hun naam.
Hoe u een gebruikersextensie maakt
Stap 1) Actie - alle acties worden gestart met "do", dwz als de actie voor tekst in hoofdletters is, is de naam doTextUpperCase. Wanneer we deze actiemethode toevoegen in Selenium IDE, maakt Selenium IDE zelf een wachtmethode voor deze actie. Dus in dit geval, wanneer we de actie doTextUpperCase maken , zal Selenium IDE een overeenkomstige wachtfunctie maken als TextUpperCaseAndWait . Het kan twee parameters accepteren
Voorbeeld: tekstactie in hoofdletters
Selenium.prototype.doTextUpperCase = functie (locator, tekst) {// Hier is findElement zelf in staat om alle typen locator aan te pakken (xpath, css, naam, id, className), we hoeven alleen de locatortekst door te gevenvar element = this.page (). findElement (locator);// Maak de tekst die u wilt typentext = text.toUpperCase ();// Vervang de elementtekst door de nieuwe tekstthis.page (). replaceText (element, tekst);
Stap 2) Beoordelaars / bewering - Alle beoordelaars die zijn geregistreerd in het prototype van een seleniumobject krijgen een voorvoegsel
door "get" of "is" Ex. getValueFromCompoundTable, isValueFromCompoundTable. Het kan twee parameters accepteren, één voor target en één voor waarde veld in testcase.
Voor elke beoordelaar zullen er overeenkomstige verificatiefuncties zijn, voorafgegaan door "verifiëren", "assert" en het wachtfunctie-voorvoegsel door "waitFor"
Voorbeeld: voor beoordelaars van tekst in hoofdletters
Selenium.prototype.assertTextUpperCase = functie (locator, tekst) {// Alle locator-strategieën worden automatisch afgehandeld door "findElement"var element = this.page (). findElement (locator);// Maak de tekst om te verifiërentext = text.toUpperCase ();// Haal de werkelijke elementwaarde opvar actualValue = element.value;// Zorg ervoor dat de werkelijke waarde overeenkomt met de verwachteAssert.matches (verwachteValue, actualValue);Selenium.prototype.isTextEqual = functie (locator, tekst) {retourneer this.getText (locator) .value === tekst;Selenium.prototype.getTextValue = functie (locator, tekst) {retourneer this.getText (locator) .value;
Stap 3) Locatorstrategie - Als we onze eigen functie willen creëren om een element dan te lokaliseren
we moeten het PageBot-prototype uitbreiden met een functie met het voorvoegsel "locationsElementBy."
Er zijn twee parameters nodig, de eerste is de locator-string en de tweede is het document
waar het moet worden doorzocht.
Voorbeeld: voor tekstzoeker in hoofdletters
// Het "inDocument" is een document dat u zoekt.PageBot.prototype.locateElementByUpperCase = functie (tekst, inDocument) {// Maak de tekst om naar te zoekenvar verwachteValue = text.toUpperCase ();// Loop door alle elementen, op zoek naar degene die dat wel hebben// een waarde === onze verwachte waardevar allElements = inDocument.getElementsByTagName ("*");// Deze ster '*' is een soort reguliere expressie die door elk element gaat (in HTML DOM heeft elk element zeker een tagnaam zoals , ,,