Selenium Extensii de bază (User-Extensions.js)
⚡ Rezumat inteligent
Selenium Extensiile de bază, numite și extensii de utilizator, adaugă acțiuni personalizate, accesori și strategii de localizare la Selenium IDE prin atașarea JavaFuncții de script pentru Selenium și obiecte prototip PageBot la pornirea IDE-ului.
Selenium Extensii de bază
Pentru a înțelege extensiile, să înțelegem mai întâi cei trei piloni ai Selenium IDEFiecare comandă pe care o înregistrați sau o tastați în IDE aparține uneia dintre cele trei categorii de mai jos, iar fiecare captură de ecran arată cum apare acea categorie în lista de comenzi IDE.
- Acțiune: Ce operațiune efectuați pe ecranul interfeței utilizator.
- Accesori / Afirmații: Ce verificare efectuați asupra datelor pe care le obțineți de la interfața cu utilizatorul.
- Strategia de localizare: Cum găsești elementul în interfața cu utilizatorul.
Selenium IDE vine cu o bibliotecă matură care conține deja o mulțime de acțiuni, accesori și aserțiuni, precum și strategii de localizare.
Uneori, însă, un proiect necesită funcționalități care nu se află în biblioteca respectivă. În această situație, puteți extinde biblioteca adăugând propria extensie personalizată. Aceste extensii personalizate se numesc extensia utilizator.
De exemplu, să presupunem că aveți nevoie de o acțiune care convertește textul în majuscule înainte de a-l completa într-un element web. Nu există o astfel de acțiune în biblioteca implicită, așa că vă creați propria extensie de utilizator. În acest tutorial veți învăța cum să construiți o extensie de utilizator care convertește textul în majuscule.
⚠️ Înainte de a începe: fluxul de lucru descris aici aparține Selenium Nucleul și originalul Firefox-conecteaza Selenium IDE. Selenium Core a fost retras, iar suportul pentru extensiile de utilizator a fost eliminat de la Selenium borcane în Selenium 3. Pașii și codul de mai jos sunt păstrați deoarece un număr mare de suite Selenese vechi încă depind de acestea; înlocuirea modernă este descrisă mai târziu în acest articol.
Cerința de a crea un Selenium Extensie utilizator
Pentru a crea o extensie de utilizator pentru Selenium IDE, ai nevoie de conceptele de bază ale JavaScenariu și, în special, JavaObiect prototip script. Diagrama de mai jos prezintă cele două obiecte prototip la care se atașează o extensie de utilizator.
Pentru a crea extensia de utilizator, scrieți JavaMetode de script și adăugați-le la Selenium prototipul obiectului și prototipul obiectului PageBot.
Cum Selenium IDE recunoaște o extensie de utilizator
După ce o extensie de utilizator este adăugată la Selenium IDE și IDE-ul este pornit, fiecare funcție înregistrată pe acestea JavaPrototipurile de script sunt încărcate și Selenium IDE recunoaște fiecare comandă după nume. De aceea, prefixele de denumire din secțiunea următoare nu sunt o alegere de stil - ci reprezintă modul în care IDE clasifică comanda.
Cum se creează o extensie de utilizator
Pasul 1) Acțiune – toate acțiunile încep cu doDacă acțiunea convertește textul în majuscule, numele său este doTextUpperCaseCând adăugați această metodă de acțiune la Selenium IDE, IDE-ul în sine creează o metodă de așteptare corespunzătoare, deci doTextUpperCase produce și funcția de așteptare textMajusculeȘiAșteptațiMetoda poate accepta doi parametri.
Exemplu: Acțiune de text cu majuscule
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); };
Pasul 2) Accesori / Afirmații – toți utilizatorii de acces înregistrați pe Selenium prototipul obiectului este prefixat de obține or is, de exemplu getValueFromCompoundTable sau isValueFromCompoundTable. Un accesor poate accepta doi parametri, unul pentru țintă și unul pentru câmpul de valoare din cazul de testare. Captura de ecran de mai jos arată cum apar aceste prefixe odată ce extensia este încărcată.
Pentru fiecare accesor, Selenium IDE generează funcțiile de verificare corespunzătoare prefixate de verifica și afirma, plus o funcție de așteptare prefixată de așteptați.
Exemplu: Pentru accesori de text cu majuscule
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; };
Pasul 3) Strategia de localizare – dacă vrei să-ți creezi propria funcție pentru a localiza un element, extinde prototipul PageBot cu o funcție prefixată de locateElementByAcceptă doi parametri: șirul de caractere al locatorului și documentul în care trebuie căutat elementul.
Exemplu: pentru Localizatorul de text cu majuscule
// 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; };
Salvați toate cele trei funcții într-un singur fișier numit extensii-utilizator.jsFișierul este simplu JavaScript, deci orice editor de text este suficient.
Cum se utilizează extensia Core nou creată
Încărcarea fișierului este o sarcină în patru pași în versiunea originală Firefox-plugin IDE. Fiecare captură de ecran de mai jos corespunde pasului numerotat de lângă ea.
- Accesează Selenium IDE și faceți clic Opțiuni -> Opțiuni…
- În General secțiune, selectați locația elementului nou creat Selenium Extensia nucleului.
- Clic OK și reporniți Selenium SDI.
- Veți găsi extensia în lista de comenzi.
Selenium Extensii de bază vs. Selenium Extensii IDE
Cei doi termeni sunt folosiți interschimbabil în materialele mai vechi, dar descriu straturi diferite, iar distincția contează atunci când decideți unde să plasați logica personalizată.
| Aspect | Selenium Extensie de bază | Selenium Extensie IDE |
|---|---|---|
| Ceea ce extinde | Biblioteca de comenzi Selenese utilizată în timpul redării | Aplicația IDE în sine |
| Fișier încărcat | extensii-utilizator.js | user-extensions-ide.js în IDE-ul vechi, un manifest de plugin în IDE-ul curent |
| Utilizare tipică | Acțiuni noi, accesori și strategii de localizare | Noi elemente de meniu, panouri, formate și comportamentul înregistratorului |
| Obiecte atinse | Selenium.prototype și PageBot.prototype | API-uri pentru editorul și înregistrarea IDE |
| Se execută în timpul | Executarea testului | Autorizare și înregistrare |
Pe scurt, o extensie Core schimbă ceea ce poate face un test, în timp ce o extensie IDE schimbă ceea ce poate face instrumentul.
Cum Modernul Selenium IDE înlocuiește user-extensions.js
Firefox-conecteaza Selenium IDE a încetat să funcționeze când Firefox s-a mutat la arhitectura WebExtensions, iar IDE-ul a fost rescris ca Chrome, Firefox și extensia de browser Edge. Această rescriere a eliminat câmpul Opțiuni afișat mai sus, deci nu există niciun loc pentru a indica un fișier user-extensions.js. Două alternative acceptate acoperă același domeniu.
- Comanda de executare a scriptului. Pentru o singură dată JavaScript, adăugați un executați scriptul or executați scriptul asincron treceți direct la test și stocați rezultatul într-o variabilă. Acesta este cel mai apropiat echivalent al unei mici acțiuni personalizate.
- Un plugin. Pentru comenzi reutilizabile, construiți o extensie de browser care înregistrează un manifest în IDE. Manifestul declară fiecare comandă nouă cu un ID, un nume, un tip opțional și documentație și poate declara și locatori noi.
Manifestul este înregistrat prin trimiterea unui mesaj către extensia IDE, așa cum se arată în fișierul oficial Selenium Documentația pluginului IDE.
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);
Disciplina de denumire supraviețuiește migrării: o comandă de plugin este încă declarată o singură dată și apoi reutilizată în fiecare test, exact așa cum a fost o extensie Core.
Extensii și plugin-uri populare utilizate în Selenium IDE
Add-on-urile de mai jos au fost cele mai utilizate în IDE-ul vechi. Mai multe dintre ele, cum ar fi controlul fluxului și capturile de ecran în caz de eșec, sunt acum încorporate în IDE-ul actual sau disponibile ca plugin-uri întreținute.
| Nume | Scop |
|---|---|
| Favorite | Pentru a marca o suită de teste ca favorită și a o executa cu un singur clic |
| Flex Pilot X | Pentru automatizarea bazată pe Flex |
| FlexMonkium | Pentru înregistrarea și redarea bazate pe Adobe Flex de testare in Selenium IDE |
| Înregistrare fișiere | Pentru salvarea jurnalelor într-un fișier |
| Controlul debitului | Pentru a controla fluxul de execuție a testului |
| Evidențiați elemente | Pentru a evidenția un control web |
| Așteptați implicit | A aștepta un element pentru o anumită limită de timp |
| Captură de ecran la Eșec | Faceți o captură de ecran la eșec |
| Rezultatele testului | Salveaza caz de testare rezultat pentru o suită de teste cu un singur clic |
Bătrânii SeleniumPagina de descărcare HQ care găzduia aceste fișiere nu mai există. Pluginurile actuale și IDE-ul în sine sunt distribuite de la Selenium Site-ul proiectului IDE și din Chrome, Firefox și magazine de extensii Edge.
Descărcați Selenium Extensia de bază utilizată în acest tutorial









