Selenium Osnovna proširenja (User-Extensions.js)
⚡ Pametni sažetak
Selenium Osnovna proširenja, koja se nazivaju i korisnička proširenja, dodaju prilagođene akcije, pristupnike i strategije lokatora Selenium IDE pričvršćivanjem JavaFunkcije skripte za Selenium i prototipne objekte PageBot-a kada se pokrene IDE.
Selenium Core Extensions
Da bismo razumjeli ekstenzije, prvo shvatimo tri stupa Selenium IDESvaka naredba koju snimite ili upišete u IDE pripada jednoj od tri kategorije u nastavku, a svaka snimka zaslona prikazuje kako se ta kategorija pojavljuje na popisu naredbi IDE-a.
- Akcijski: Koju operaciju izvodite na zaslonu korisničkog sučelja.
- Pristupnici / Tvrdnja: Koju provjeru provodite na podacima koje dobivate iz korisničkog sučelja?
- Strategija lokatora: Kako pronaći element u korisničkom sučelju.
Selenium IDE dolazi sa zrelom bibliotekom koja već sadrži mnoštvo akcija, pristupača i tvrdnji te strategija lokatora.
Međutim, ponekad projektu treba funkcionalnost koja nije u toj biblioteci. U toj situaciji možete proširiti biblioteku dodavanjem vlastitog prilagođenog proširenja. Ta prilagođena proširenja nazivaju se korisničko proširenje.
Na primjer, pretpostavimo da vam je potrebna radnja koja pretvara tekst u velika slova prije nego što ga unese u web element. Takva radnja ne postoji u zadanoj biblioteci, pa stvarate vlastito korisničko proširenje. U ovom vodiču naučit ćete kako izraditi korisničko proširenje koje pretvara tekst u velika slova.
⚠️ Prije nego što počnete: ovdje opisani tijek rada pripada Selenium Jezgra i original Firefox-dodatak Selenium IDE. Selenium Jezgra je ukinuta, a podrška za korisnička proširenja je ukinuta. Selenium staklenke u Selenium 3. Koraci i kod u nastavku su sačuvani jer veliki broj naslijeđenih Selenese paketa još uvijek ovisi o njima; moderna zamjena opisana je kasnije u ovom članku.
Zahtjev za stvaranje Selenium Korisničko proširenje
Za izradu korisničkog proširenja za Selenium IDE-u, potrebni su vam osnovni koncepti JavaScript i, posebno, JavaObjekt prototipa skripte. Donji dijagram prikazuje dva objekta prototipa kojima se korisničko proširenje pridružuje.
Za izradu korisničkog proširenja pišete JavaMetode skripte i dodajte ih u Selenium prototip objekta i prototip objekta PageBot.
Kako Selenium IDE prepoznaje korisničko proširenje
Nakon što se korisničko proširenje doda u Selenium IDE i IDE je pokrenut, svaka funkcija registrirana na njima JavaPrototipovi skripti su učitani i Selenium IDE prepoznaje svaku po imenu. Zato prefiksi imenovanja u sljedećem odjeljku nisu stilski izbor - oni predstavljaju način na koji IDE klasificira vašu naredbu.
Kako stvoriti korisničko proširenje
Korak 1) Radnja – sve radnje počinju s doAko radnja pretvara tekst u velika slova, njezin naziv je doTextUpperCaseKada dodate ovu metodu akcije u Selenium IDE, sam IDE stvara odgovarajuću metodu čekanja, tako da doTextUpperCase također proizvodi funkciju čekanja tekstUpperCaseAndWaitMetoda može prihvatiti dva parametra.
Primjer: Radnja teksta velikim slovima
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); };
Korak 2) Pristupnici / Tvrdnja – svi pristupnici registrirani na Selenium prototipovi objekta imaju prefiks dobiti or is, na primjer getValueFromCompoundTable ili isValueFromCompoundTable. Pristupnik može prihvatiti dva parametra, jedan za cilj i jedan za polje vrijednosti u testnom slučaju. Snimka zaslona u nastavku prikazuje kako se ti prefiksi pojavljuju nakon što se proširenje učita.
Za svaki pristupnik, Selenium IDE generira odgovarajuće funkcije provjere s prefiksom provjeriti i tvrditi, plus funkcija čekanja kojoj je prefiks čekaj.
Primjer: Za pristupnike teksta velikim slovima
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; };
Korak 3) Strategija lokatora – ako želite stvoriti vlastitu funkciju za lociranje elementa, proširite prototip PageBota funkcijom s prefiksom locateElementByPrima dva parametra: niz lokatora i dokument u kojem treba pretražiti element.
Primjer: za lokator teksta velikim slovima
// 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; };
Spremite sve tri funkcije u jednu datoteku pod nazivom korisnička-proširenja.jsDatoteka je obična JavaSkripta, tako da je dovoljan bilo koji uređivač teksta.
Kako koristiti novostvoreno proširenje jezgre
U originalu je učitavanje datoteke zadatak u četiri koraka Firefox-plugin IDE. Svaka snimka zaslona u nastavku odgovara numeriranom koraku pored nje.
- Idi na Selenium IDE i kliknite Opcije -> Opcije…
- u Osnovne informacije odjeljak, odaberite lokaciju novostvorenog Selenium Osnovno proširenje.
- Kliknite OK i ponovno pokrenite Selenium SDI.
- Proširenje ćete pronaći u popisu naredbi.
Selenium Osnovna proširenja u odnosu na Selenium IDE proširenja
Ta se dva pojma koriste naizmjenično u starijim materijalima, ali opisuju različite slojeve, a razlika je važna kada odlučujete gdje smjestiti prilagođenu logiku.
| Aspekt | Selenium Osnovno proširenje | Selenium IDE proširenje |
|---|---|---|
| Što se proširuje | Selenese biblioteka naredbi koja se koristi tijekom reprodukcije | Sama IDE aplikacija |
| Datoteka učitana | korisnička-proširenja.js | user-extensions-ide.js u naslijeđenom IDE-u, manifest dodatka u trenutnom IDE-u |
| Tipična upotreba | Nove akcije, pristupnici i strategije lokatora | Nove stavke izbornika, ploče, formati i ponašanje snimača |
| Dodirnuti predmeti | Selenium.prototype i PageBot.prototype | API-ji za uređivanje i snimanje IDE-a |
| Radi tijekom | Izvođenje testa | Autorstvo i snimanje |
Ukratko, Core ekstenzija mijenja što test može učiniti, dok IDE ekstenzija mijenja što alat može učiniti.
Kako moderna Selenium IDE zamjenjuje user-extensions.js
The Firefox-dodatak Selenium IDE je prestao raditi kada Firefox premješten na WebExtensions arhitekturu, a IDE je prepisan kao Chrome, Firefox i proširenje za preglednik Edge. Ta je prerada uklonila polje Opcije prikazano gore, tako da nema mjesta za pokazivanje na datoteku user-extensions.js. Dvije podržane alternative pokrivaju isto područje.
- Naredba za izvršavanje skripte. Za jednokratnu upotrebu JavaSkripta, dodajte izvrši skriptu or izvrši asinkroni skript uđite izravno u test i pohranite rezultat u varijablu. Ovo je najbliži ekvivalent maloj prilagođenoj akciji.
- Dodatak. Za naredbe koje se mogu ponovno koristiti, izradite proširenje preglednika koje registrira manifest s IDE-om. Manifest deklarira svaku novu naredbu s ID-om, nazivom, opcionalnim tipom i dokumentacijom, a može deklarirati i nove lokatore.
Manifest se registrira slanjem poruke IDE ekstenziji, kao što je prikazano u službenom Selenium Dokumentacija IDE dodataka.
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 imenovanja preživljava migraciju: naredba dodatka se i dalje deklarira jednom, a zatim ponovno koristi u svakom testu, točno kao što je to bilo s Core ekstenzijom.
Popularna proširenja i dodaci koji se koriste u Selenium IDE
Dodaci u nastavku bili su najčešće korišteni u naslijeđenom IDE-u. Nekoliko njih, poput kontrole protoka i snimke zaslona prilikom neuspjeha, sada su ugrađeni u trenutni IDE ili dostupni kao održavani dodaci.
| Ime | Svrha |
|---|---|
| Omiljene | Označavanje testnog paketa kao favorita i njegovo izvršavanje jednim klikom |
| Flex Pilot X | Za automatizaciju temeljenu na Flexu |
| FlexMonkium | Za snimanje i reprodukciju temeljeno na Adobe Flexu testiranje in Selenium IDE |
| Zapisivanje datoteka | Za spremanje zapisa u datoteku |
| Kontrola protoka | Za kontrolu tijeka izvođenja testa |
| Označite elemente | Za označavanje web kontrole |
| Implicitno čekanje | Čekanje elementa određeno vremensko ograničenje |
| Snimka zaslona pri neuspjehu | Napravite snimku zaslona u slučaju neuspjeha |
| Rezultati ispitivanja | Spremi testni slučaj rezultat za paket testova jednim klikom |
Stara SeleniumStranica za preuzimanje HQ-a koja je hostirala ove datoteke više ne postoji. Trenutni dodaci i sam IDE distribuiraju se s Selenium Stranica IDE projekta i iz Chromea, Firefox i trgovine dodataka za Edge.
Preuzimanje Selenium Core Extension korišten u ovom vodiču









