Selenium Kjerneutvidelser (User-Extensions.js)
⚡ Smart oppsummering
Selenium Kjerneutvidelser, også kalt brukerutvidelser, legger til tilpassede handlinger, tilgangsenheter og lokaliseringsstrategier til Selenium IDE ved å koble til JavaSkriptfunksjoner til Selenium og PageBot-prototypeobjekter når IDE-en starter.
Selenium Kjerneutvidelser
For å forstå utvidelser, la oss først forstå de tre søylene i Selenium IDEHver kommando du spiller inn eller skriver inn i IDE-en tilhører en av de tre kategoriene nedenfor, og hvert skjermbilde viser hvordan den kategorien vises i IDE-kommandolisten.
- Handling: Hvilken operasjon du utfører på brukergrensesnittskjermen.
- Tilgangspersoner / Påstand: Hvilken verifisering du utfører på dataene du får fra brukergrensesnittet.
- Lokaliseringsstrategi: Hvordan du finner elementet i brukergrensesnittet.
Selenium IDE leveres med et modent bibliotek som allerede inneholder mange handlinger, aksessorer og påstander, og lokaliseringsstrategier.
Noen ganger trenger imidlertid et prosjekt funksjonalitet som ikke finnes i det biblioteket. I så fall kan du utvide biblioteket ved å legge til din egen tilpassede utvidelse. Disse tilpassede utvidelsene kalles en brukerutvidelse.
La oss for eksempel si at du trenger en handling som konverterer tekst til store bokstaver før du fyller den inn i et webelement. Ingen slik handling finnes i standardbiblioteket, så du oppretter din egen brukerutvidelse. I denne veiledningen lærer du hvordan du bygger en brukerutvidelse som konverterer tekst til store bokstaver.
⚠️ Før du starter: arbeidsflyten som er beskrevet her tilhører Selenium Kjernen og originalen Firefox-plugin Selenium IDE. Selenium Core er pensjonert, og støtte for brukerutvidelser er fjernet fra Selenium krukker i Selenium 3. Trinnene og koden nedenfor er bevart fordi et stort antall eldre Selenese-pakker fortsatt er avhengige av dem; den moderne erstatningen er beskrevet senere i denne artikkelen.
Krav om å opprette en Selenium Brukerutvidelse
For å opprette en brukerutvidelse for Selenium IDE, du trenger de grunnleggende konseptene for JavaScript og, spesielt, den JavaSkriptprototypeobjekt. Diagrammet nedenfor viser de to prototypeobjektene som en brukerutvidelse knytter seg til.
For å opprette brukerutvidelsen din, skriver du JavaSkriptmetoder og legg dem til Selenium objektprototypen og til PageBot-objektprototypen.
Hvordan Selenium IDE gjenkjenner en brukerutvidelse
Etter at en brukerutvidelse er lagt til Selenium IDE og IDE-en startes, hver funksjon som er registrert på disse JavaSkriptprototyper lastes inn, og Selenium IDE gjenkjenner hver enkelt ved navn. Derfor er navngivningsprefiksene i neste avsnitt ikke et stilvalg – de er hvordan IDE klassifiserer kommandoen din.
Slik oppretter du en brukerutvidelse
Trinn 1) Handling – alle handlinger starter med doHvis handlingen konverterer tekst til store bokstaver, blir navnet doTextUpperCaseNår du legger til denne handlingsmetoden til Selenium IDE, IDE-en selv oppretter en samsvarende ventemetode, så doTextUpperCase produserer også ventefunksjonen tekstStore bokstaverOgVentMetoden kan akseptere to parametere.
Eksempel: Teksthandling med store bokstaver
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); };
Trinn 2) Tilganger / Påstand – alle tilgangsdeltakere registrert på Selenium objektprototypene har prefikset få or is, for eksempel getValueFromCompoundTable eller isValueFromCompoundTable. En aksessor kan godta to parametere, én for målet og én for verdifeltet i testtilfellet. Skjermbildet nedenfor viser hvordan disse prefiksene vises når utvidelsen er lastet inn.
For hver aksessor, Selenium IDE genererer de tilsvarende verifiseringsfunksjonene med prefiksene verifisere og hevde, pluss en ventefunksjon prefiksert av ventPå.
Eksempel: For teksttilgang med store bokstaver
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; };
Trinn 3) Lokaliseringsstrategi – hvis du vil lage din egen funksjon for å finne et element, utvider du PageBot-prototypen med en funksjon prefikset med locateElementByDen trenger to parametere: locator-strengen og dokumentet der elementet skal søkes i.
Eksempel: For tekstsøker for store bokstaver
// 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; };
Lagre alle tre funksjonene i én fil med navnet brukerutvidelser.jsFilen er enkel JavaSkript, så hvilken som helst tekstredigerer er tilstrekkelig.
Slik bruker du den nyopprettede kjerneutvidelsen
Å laste inn filen er en oppgave i fire trinn i originalen Firefox-plugin IDE. Hvert skjermbilde nedenfor tilsvarer det nummererte trinnet ved siden av.
- Gå til Selenium IDE og klikk Alternativer -> Alternativer…
- på Informasjon seksjonen, velg plasseringen til den nyopprettede Selenium Kjerneutvidelse.
- Klikk OK og start på nytt Selenium SDI.
- Du finner utvidelsen i kommandolisten.
Selenium Kjerneutvidelser vs. Selenium IDE-utvidelser
De to begrepene brukes om hverandre i eldre materiale, men de beskriver forskjellige lag, og skillet er viktig når du bestemmer deg for hvor du skal plassere tilpasset logikk.
| Aspekt | Selenium Kjerneutvidelse | Selenium IDE-utvidelse |
|---|---|---|
| Hva den strekker seg | Selenese-kommandobiblioteket som brukes under avspilling | Selve IDE-applikasjonen |
| Filen er lastet inn | brukerutvidelser.js | user-extensions-ide.js i den eldre IDE-en, et plugin-manifest i den nåværende IDE-en |
| Typisk bruk | Nye handlinger, tilgangspunkter og lokaliseringsstrategier | Nye menyelementer, paneler, formater og opptakerens oppførsel |
| Objekter berørt | Selenium.prototype og PageBot.prototype | IDE-redigerings- og opptaks-API-er |
| Kjører under | Test utførelse | Forfatterskap og innspilling |
Kort sagt, en Core-utvidelse endrer hva en test kan gjøre, mens en IDE-utvidelse endrer hva verktøyet kan gjøre.
Hvordan den moderne Selenium IDE erstatter user-extensions.js
Ocuco Firefox-plugin Selenium IDE sluttet å virke da Firefox flyttet til WebExtensions-arkitekturen, og IDE-en ble omskrevet som en Chrome, Firefox og Edge-nettleserutvidelsen. Den omskrivingen fjernet alternativfeltet som vises ovenfor, så det er ikke noe sted å peke på en user-extensions.js-fil. To støttede alternativer dekker samme område.
- Kommandoen «utfør skript». For engangsforeteelser JavaSkript, legg til et utfør skript or kjøre asynkront skript gå direkte inn i testen og lagre resultatet i en variabel. Dette er det nærmeste som en liten tilpasset handling.
- En plugin. For gjenbrukbare kommandoer, bygg en nettleserutvidelse som registrerer et manifest med IDE-en. Manifestet deklarerer hver nye kommando med en ID, et navn, en valgfri type og dokumentasjon, og det kan også deklarere nye lokatorer.
Manifestet registreres ved å sende en melding til IDE-utvidelsen, som vist i den offisielle Selenium Dokumentasjon for IDE-plugin.
browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);
Navngivningsdisiplinen overlever migreringen: en plugin-kommando deklareres fortsatt én gang og brukes deretter på nytt i hver test, akkurat som en Core-utvidelse ble.
Populære utvidelser og plugin-moduler brukt i Selenium IDE
Tilleggene nedenfor var de mest brukte i den eldre IDE-en. Flere av dem, som flytkontroll og screenshot-on-failure, er nå innebygd i den nåværende IDE-en eller tilgjengelige som vedlikeholdte plugins.
| Navn | Formål |
|---|---|
| Favoritter | For å markere en testpakke som favoritt og kjøre den med ett klikk |
| Flex Pilot X | For Flex-basert automatisering |
| FlexMonkium | For Adobe Flex-basert opptak og avspilling testing in Selenium IDE |
| Fillogging | For å lagre logger i en fil |
| Flytkontroll | For å kontrollere flyten av testutførelse |
| Marker elementer | For å markere en webkontroll |
| Implisitt vent | Å vente på et element i en viss tidsperiode |
| Skjermbilde ved feil | Ta et skjermbilde ved feil |
| Testresultater | Lagre testforsøk resultat for en testpakke med ett klikk |
Den gamle SeleniumHQ-nedlastingssiden som var vert for disse filene finnes ikke lenger. Nåværende programtillegg og selve IDE-en distribueres fra Selenium IDE-prosjektnettsted og fra Chrome, Firefox og Edge-tilleggsbutikker.
Last ned Selenium Core Extension brukt i denne opplæringen









