Selenium Core Extensions (User-Extensions.js)
โก Chytrรฉ shrnutรญ
Selenium Zรกkladnรญ rozลกรญลenรญ, nazรฝvanรก takรฉ uลพivatelskรก rozลกรญลenรญ, pลidรกvajรญ vlastnรญ akce, pลรญstupovรฉ objekty a strategie lokรกtoru do Selenium IDE pลipojenรญm JavaFunkce skriptu pro Selenium a prototypovรฉ objekty PageBot pลi spuลกtฤnรญ IDE.
Selenium Rozลกรญลenรญ jรกdra
Abychom pochopili rozลกรญลenรญ, nejprve si ujasnฤme tลi pilรญลe Selenium IDEKaลพdรฝ pลรญkaz, kterรฝ zaznamenรกte nebo zadรกte do IDE, patลรญ do jednรฉ ze tลรญ nรญลพe uvedenรฝch kategoriรญ a kaลพdรฝ snรญmek obrazovky ukazuje, jak se danรก kategorie zobrazuje v seznamu pลรญkazลฏ IDE.
- Akce: Jakou operaci provรกdรญte na obrazovce uลพivatelskรฉho rozhranรญ.
- Pลรญstupovรฉ metody / Tvrzenรญ: Jakรฉ ovฤลenรญ provรกdรญte u dat zรญskanรฝch z uลพivatelskรฉho rozhranรญ.
- Strategie lokรกtoru: Jak najdete prvek v uลพivatelskรฉm rozhranรญ.
Selenium IDE je dodรกvรกno s propracovanou knihovnou, kterรก jiลพ obsahuje spoustu akcรญ, pลรญstupovรฝch metod a asercรญ a strategiรญ lokรกtoru.
Nฤkdy vลกak projekt potลebuje funkce, kterรฉ v danรฉ knihovnฤ nejsou. V takovรฉ situaci mลฏลพete knihovnu rozลกรญลit pลidรกnรญm vlastnรญho rozลกรญลenรญ. Tato vlastnรญ rozลกรญลenรญ se nazรฝvajรญ uลพivatelskรฉ rozลกรญลenรญ.
Pลedpoklรกdejme napลรญklad, ลพe potลebujete akci, kterรก pลevede text na velkรก pรญsmena pลed jeho vloลพenรญm do webovรฉho prvku. Ve vรฝchozรญ knihovnฤ takovรก akce neexistuje, takลพe si vytvoลรญte vlastnรญ uลพivatelskรฉ rozลกรญลenรญ. V tomto tutoriรกlu se nauฤรญte, jak vytvoลit uลพivatelskรฉ rozลกรญลenรญ, kterรฉ pลevede text na velkรก pรญsmena.
โ ๏ธ Neลพ zaฤnete: Zde popsanรฝ pracovnรญ postup patลรญ Selenium Jรกdro a originรกl Firefox-plugin Selenium IDE. Selenium Jรกdro bylo vyลazeno a podpora uลพivatelskรฝch rozลกรญลenรญ byla zruลกena. Selenium sklenice v Selenium 3. Nรญลพe uvedenรฉ kroky a kรณd jsou zachovรกny, protoลพe na nich stรกle zรกvisรญ velkรฉ mnoลพstvรญ starลกรญch sad Selenese; modernรญ nรกhrada je popsรกna dรกle v tomto ฤlรกnku.
Poลพadavek na vytvoลenรญ Selenium Uลพivatelskรก pลรญpona
Vytvoลenรญ uลพivatelskรฉ linky pro Selenium IDE, potลebujete zรกkladnรญ pojmy JavaScรฉnรกล a zejmรฉna JavaObjekt prototypu skriptu. Nรญลพe uvedenรฝ diagram ukazuje dva objekty prototypลฏ, ke kterรฝm se uลพivatelskรฉ rozลกรญลenรญ pลipojuje.
Chcete-li vytvoลit uลพivatelskรฉ rozลกรญลenรญ, napรญลกete JavaSkriptovacรญ metody a jejich pลidรกnรญ do Selenium prototyp objektu a prototyp objektu PageBot.
Jak Selenium IDE rozpoznรกvรก uลพivatelskรฉ rozลกรญลenรญ
Po pลidรกnรญ uลพivatelskรฉ linky do Selenium IDE a IDE je spuลกtฤno, kaลพdรก funkce je na nich registrovanรก JavaPrototypy skriptลฏ jsou naฤteny a Selenium IDE rozpoznรกvรก kaลพdรฝ z nich podle jeho nรกzvu. Proto prefixy nรกzvลฏ v nรกsledujรญcรญ ฤรกsti nejsou stylistickou volbou โ jde o to, jak IDE klasifikuje vรกลก pลรญkaz.
Jak vytvoลit uลพivatelskรฉ rozลกรญลenรญ
Krok 1) Akce โ vลกechny akce zaฤรญnajรญ doPokud akce pลevรกdรญ text na velkรก pรญsmena, jejรญ nรกzev je doTextUpperCaseKdyลพ pลidรกte tuto metodu akce do Selenium IDE, samotnรฉ IDE vytvรกลรญ odpovรญdajรญcรญ metodu ฤekรกnรญ, takลพe doTextUpperCase takรฉ vytvรกลรญ funkci wait textUpperCaseAndWaitMetoda mลฏลพe pลijรญmat dva parametry.
Pลรญklad: Akce textu s velkรฝmi pรญsmeny
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); };
Krok 2) Pลรญstupovรฉ metody / Tvrzenรญ โ vลกichni pลรญstupovรญ uลพivatelรฉ registrovanรญ na Selenium prototypy objektลฏ majรญ pลedponu zรญskat or is, napลรญklad getValueFromCompoundTable nebo isValueFromCompoundTable. Pลรญstupovรฝ objekt mลฏลพe pลijรญmat dva parametry, jeden pro cรญl a jeden pro pole hodnoty v testovacรญm pลรญpadฤ. Nรกsledujรญcรญ snรญmek obrazovky ukazuje, jak se tyto prefixy zobrazujรญ po naฤtenรญ rozลกรญลenรญ.
Pro kaลพdรฝ pลรญstupovรฝ objekt, Selenium IDE generuje odpovรญdajรญcรญ ovฤลovacรญ funkce s prefixem ovฤลit si a tvrdรญ, plus funkce ฤekรกnรญ s pลedponou ฤekat na.
Pลรญklad: Pro pลรญstupovรฉ objekty pro text s velkรฝmi pรญsmeny
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; };
Krok 3) Strategie lokรกtoru โ pokud chcete vytvoลit vlastnรญ funkci pro vyhledรกnรญ prvku, rozลกiลte prototyp PageBot o funkci s pลedponou locateElementByPลijรญmรก dva parametry: ลetฤzec lokรกtoru a dokument, ve kterรฉm mรก bรฝt prvek prohledรกn.
Pลรญklad: Pro lokรกtor textu velkรฝch pรญsmen
// 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; };
Uloลพte vลกechny tลi funkce do jednoho souboru s nรกzvem user-extensions.jsSoubor je prostรฝ. JavaSkript, takลพe postaฤรญ libovolnรฝ textovรฝ editor.
Jak pouลพรญvat novฤ vytvoลenรฉ rozลกรญลenรญ Core
Naฤtenรญ souboru je v originรกle ฤtyลkrokovรฝ รบkol Firefox-plugin IDE. Kaลพdรฝ snรญmek obrazovky nรญลพe odpovรญdรก oฤรญslovanรฉmu kroku vedle nฤj.
- Pลejรญt Selenium IDE a kliknฤte Moลพnosti -> Moลพnostiโฆ
- v obecnฤ V sekci vyberte umรญstฤnรญ novฤ vytvoลenรฉho Selenium Rozลกรญลenรญ jรกdra.
- kliknฤte OK a restartujte Selenium SDI.
- Rozลกรญลenรญ najdete v seznamu pลรญkazลฏ.
Selenium Zรกkladnรญ rozลกรญลenรญ vs. Selenium Rozลกรญลenรญ IDE
Tyto dva termรญny se ve starลกรญch materiรกlech pouลพรญvajรญ zamฤnitelnฤ, ale popisujรญ rลฏznรฉ vrstvy a toto rozliลกenรญ je dลฏleลพitรฉ pลi rozhodovรกnรญ, kam umรญstit vlastnรญ logiku.
| Vzhled | Selenium Rozลกรญลenรญ jรกdra | Selenium Rozลกรญลenรญ IDE |
|---|---|---|
| Co rozลกiลuje | Knihovna pลรญkazลฏ Selenese pouลพรญvanรก bฤhem pลehrรกvรกnรญ | Samotnรก IDE aplikace |
| Soubor naฤten | user-extensions.js | user-extensions-ide.js ve starลกรญm IDE, manifest pluginu v aktuรกlnรญm IDE |
| Typickรฉ pouลพitรญ | Novรฉ akce, pลรญstupovรฉ metody a strategie lokรกtoru | Novรฉ poloลพky nabรญdky, panely, formรกty a chovรกnรญ rekordรฉru |
| Dotฤenรฉ pลedmฤty | Selenium.prototype a PageBot.prototype | API editoru a zรกznamnรญku IDE |
| Bฤลพรญ bฤhem | Provedenรญ testu | Tvorba a nahrรกvรกnรญ |
Struฤnฤ ลeฤeno, rozลกรญลenรญ Core mฤnรญ, co test dokรกลพe, zatรญmco rozลกรญลenรญ IDE mฤnรญ, co nรกstroj dokรกลพe.
Jak modernรญ Selenium IDE Nahrazuje user-extensions.js
Jedno Firefox-plugin Selenium IDE pลestalo fungovat, kdyลพ Firefox pลesunuto na architekturu WebExtensions a IDE bylo pลepsรกno jako Chrome, Firefox a rozลกรญลenรญ prohlรญลพeฤe Edge. Toto pลepsรกnรญ odstranilo vรฝลกe uvedenรฉ pole Moลพnosti, takลพe nenรญ mรญsto, kde by se dal odkazovat na soubor user-extensions.js. Stejnou oblast pokrรฝvajรญ dvฤ podporovanรฉ alternativy.
- Pลรญkaz pro spuลกtฤnรญ skriptu. Pro jednorรกzovรฉ JavaSkript, pลidejte spustit skript or spustit asynchronnรญ skript vstoupit pลรญmo do testu a uloลพit vรฝsledek do promฤnnรฉ. Toto je nejbliลพลกรญ ekvivalent malรฉ vlastnรญ akce.
- Plugin. Pro opakovanฤ pouลพitelnรฉ pลรญkazy vytvoลte rozลกรญลenรญ prohlรญลพeฤe, kterรฉ zaregistruje manifest v IDE. Manifest deklaruje kaลพdรฝ novรฝ pลรญkaz s ID, nรกzvem, volitelnรฝm typem a dokumentacรญ a mลฏลพe takรฉ deklarovat novรฉ lokรกtory.
Manifest je registrovรกn odeslรกnรญm zprรกvy do rozลกรญลenรญ IDE, jak je znรกzornฤno v oficiรกlnรญm Selenium Dokumentace k pluginลฏm 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);
Pojmenovacรญ disciplรญna pลeลพila migraci: pลรญkaz pluginu je stรกle deklarovรกn jednou a potรฉ znovu pouลพit v kaลพdรฉm testu, pลesnฤ jako rozลกรญลenรญ Core.
Oblรญbenรก rozลกรญลenรญ a pluginy pouลพรญvanรฉ v Selenium IDE
Nรญลพe uvedenรฉ doplลky byly nejrozลกรญลenฤjลกรญ ve starลกรญm IDE. Nฤkolik z nich, jako napลรญklad ลรญzenรญ toku a funkce pro poลรญzenรญ snรญmku obrazovky pลi selhรกnรญ, je nynรญ integrovรกno do aktuรกlnรญho IDE nebo je k dispozici jako udrลพovanรฉ pluginy.
| Jmรฉno | รฤel |
|---|---|
| Oblรญbenรฉ | Oznaฤenรญ testovacรญ sady jako oblรญbenรฉ a jejรญ spuลกtฤnรญ jednรญm kliknutรญm |
| Flex Pilot X | Pro automatizaci zaloลพenou na Flex |
| FlexMonkium | Pro nahrรกvรกnรญ a pลehrรกvรกnรญ zaloลพenรฉ na Adobe Flex Testovรกnรญ in Selenium IDE |
| Protokolovรกnรญ souborลฏ | Pro uklรกdรกnรญ protokolลฏ do souboru |
| Flow Control | K ลรญzenรญ toku provรกdฤnรญ testu |
| Zvรฝraznฤte prvky | Chcete-li zvรฝraznit webovรฝ ovlรกdacรญ prvek |
| Implicitnรญ ฤekรกnรญ | ฤekรกnรญ na prvek po urฤitou dobu |
| Snรญmek obrazovky pลi selhรกnรญ | Udฤlejte snรญmek obrazovky pลi selhรกnรญ |
| Vรฝsledky testลฏ | Uloลพte modelovรฝ pลรญpad vรฝsledek pro testovacรญ sadu jednรญm kliknutรญm |
Starรฝ SeleniumStrรกnka pro stahovรกnรญ HQ, kterรก tyto soubory hostovala, jiลพ neexistuje. Aktuรกlnรญ pluginy a samotnรฉ IDE jsou distribuovรกny z Selenium Web projektu IDE a z Chromu, Firefox a obchody s doplลky pro Edge.
stรกhnฤte Selenium Core Extension pouลพitรฉ v tomto kurzu









