Selenium Alapkiterjesztések (User-Extensions.js)

⚡ Okos összefoglaló

Selenium Az alapvető kiterjesztések, más néven felhasználói kiterjesztések, egyéni műveleteket, hozzáférési lehetőségeket és helymeghatározó stratégiákat adnak hozzá a Selenium IDE csatolással JavaSzkriptfüggvények a Selenium és a PageBot prototípus objektumait az IDE indulásakor.

  • 🔘 Három pillér: Minden Selenese parancs egy művelet, egy elérő vagy állítás, illetve egy lokátor stratégia.
  • ☑️ Elnevezési szabályok: A műveletek a „do”, az accessorok a „get” vagy az „is”, a lokátorok pedig a „locateElementBy” utasítással kezdődnek.
  • ✅ Szabad várakozás parancs: A doTextUpperCase regisztrálása után az IDE automatikusan generálja a textUpperCaseAndWait függvényt.
  • 🧪 Terhelésmechanizmus: Az IDE indításkor beolvassa a user-extensions.js fájlt, így minden szerkesztés után újra kell indítani az eszközt.
  • 🇧🇷 Hagyományos állapot: Selenium Mag és a Firefox-plugin IDE-t kivonták a forgalomból, és Selenium 3 eltávolította a felhasználói kiterjesztések támogatását a jar fájlokból.
  • 📊 Modern útvonal: A jelenlegi böngészőbővítmény-ideális környezet egy bővítménymanifestet és egy végrehajtási szkriptparancsot tesz elérhetővé.

Selenium Alapvető kiterjesztések és a user-extensions.js fájl

Selenium Core Extensions

A kiterjesztések megértéséhez először is tisztázzuk a három pillért Selenium IDEMinden, az IDE-be rögzített vagy beírt parancs az alábbi három kategória egyikébe tartozik, és minden képernyőkép azt mutatja, hogyan jelenik meg az adott kategória az IDE parancslistájában.

  1. Akció: Milyen műveletet hajt végre a felhasználói felület képernyőjén.

    Selenium IDE parancslista, amely olyan műveleti parancsokat mutat be, mint a kattintás és a gépelés

  2. Hozzáférők / állítás: Milyen ellenőrzést hajt végre a felhasználói felületről kapott adatokon.

    Selenium IDE hozzáférési és assertion parancsok, melyek előtagja a get, is, verify és assert.

  3. Helymeghatározó stratégia: Hogyan találod meg az elemet a felhasználói felületen.

    Selenium IDE célmező, amely felsorolja a helymeghatározó stratégiákat, például az azonosítót, nevet, css-t és az XPath-ot

Selenium Az IDE egy kiforrott könyvtárral érkezik, amely már rengeteg műveletet, elérőt és állítást, valamint lokátorstratégiát tartalmaz.

Előfordul azonban, hogy egy projektnek olyan funkciókra van szüksége, amelyek nincsenek benne a könyvtárban. Ilyen esetben bővítheti a könyvtárat saját egyéni bővítmény hozzáadásával. Ezeket az egyéni bővítményeket nevezzük felhasználói kiterjesztés.

Tegyük fel például, hogy szükséged van egy olyan műveletre, amely a szöveget nagybetűssé alakítja, mielőtt kitöltené egy webes elemmel. Ilyen művelet nem létezik az alapértelmezett könyvtárban, ezért létrehozod a saját felhasználói bővítményedet. Ebben az oktatóanyagban megtudhatod, hogyan hozhatsz létre egy olyan felhasználói bővítményt, amely nagybetűssé alakítja a szöveget.

⚠️ Mielőtt elkezdenéd: az itt leírt munkafolyamat a következőhöz tartozik: Selenium Mag és az eredeti Firefox-bővítmény Selenium IDE. Selenium A Core-t visszavonták, és a felhasználói bővítmények támogatását is megszüntették a Selenium üvegekbe Selenium 3. Az alábbi lépéseket és kódot megőriztük, mivel számos korábbi Selenese csomag továbbra is ezektől függ; a modern cserét a cikk későbbi részében ismertetjük.

Létrehozási követelmény Selenium Felhasználói bővítmény

Felhasználói mellék létrehozása a következőhöz: Selenium IDE-ben szükséged van az alapvető fogalmakra JavaForgatókönyv és különösen a JavaSzkript prototípus objektum. Az alábbi ábra a két prototípus objektumot mutatja, amelyekhez egy felhasználói bővítmény csatlakozik.

A diagram a Selenium felhasználói bővítmény által használt prototípus és PageBot prototípus objektumok

A felhasználói bővítmény létrehozásához írja be JavaSzkriptmetódusok és azok hozzáadása a Selenium objektum prototípushoz és a PageBot objektum prototípushoz.

Hogyan Selenium Az IDE felismeri a felhasználói kiterjesztést

Miután hozzáadtak egy felhasználói melléket Selenium IDE és az IDE elindítása után minden, azokon regisztrált funkció JavaA szkript prototípusok betöltődnek, és Selenium Az IDE mindegyiket a nevük alapján ismeri fel. Ezért a következő szakaszban található névelőtagok nem stílusválasztás kérdései – ezek alapján osztályozza az IDE a parancsokat.

Felhasználói bővítmény létrehozása

1. lépés) Művelet – minden művelet ezzel kezdődik doHa a művelet nagybetűs szöveggé alakítja a szöveget, akkor a neve a következő: doTextUpperCaseAmikor hozzáadod ezt a műveleti metódust a következőhöz: Selenium IDE, maga az IDE létrehoz egy egyező várakozási metódust, tehát doTextUpperCase a várakozási függvényt is előállítja textUpperCaseAndWaitA metódus két paramétert fogadhat el.

Példa: nagybetűs szövegművelet

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);
};

2. lépés) Hozzáférések / állítás – az összes regisztrált hozzáférési jogosultság Selenium az objektum prototípusa előtaggal van ellátva kap or is, például getValueFromCompoundTable vagy isValueFromCompoundTable. Egy elérő két paramétert fogadhat el, egyet a célhoz és egyet a teszteset érték mezőjéhez. Az alábbi képernyőkép azt mutatja, hogyan jelennek meg ezek az előtagok a kiterjesztés betöltése után.

Selenium IDE, amely egy felhasználói kiterjesztésből generált get és is hozzáférési parancsokat jelenít meg

Minden egyes hozzáférési módhoz Selenium Az IDE a megfelelő ellenőrző függvényeket előzi meg a következővel: ellenőrzése és a érvényesíteni, plusz egy várakozási függvény, amelynek előtagja a várj.

Példa: Nagybetűs szöveghozzáférésekhez

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;
};

3. lépés) Helymeghatározó stratégia – Ha saját függvényt szeretne létrehozni egy elem megkereséséhez, bővítse ki a PageBot prototípust egy olyan függvénnyel, amelynek előtagja a következő: Elem helymeghatározásaKét paramétert fogad el: a lokátor karakterláncot és a dokumentumot, amelyben az elemet keresni kell.

Példa: Nagybetűs szövegkeresőhöz

// 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;
};

Mentse el mindhárom függvényt egyetlen fájlba, melynek neve: user-extensions.jsA fájl sima. JavaSzkript, tehát bármilyen szövegszerkesztő elegendő.

Az újonnan létrehozott Core kiterjesztés használata

A fájl betöltése az eredetiben négy lépésből áll. Firefox-plugin IDE. Az alábbi képernyőképek mindegyike a mellette lévő számozott lépésnek felel meg.

  1. Tovább Selenium IDE és kattints Beállítások -> Beállítások…

    Selenium Az IDE beállítások menü megnyílt a Beállítások párbeszédpanel eléréséhez

  2. A Általános szakaszban válassza ki az újonnan létrehozott helyét Selenium Magbővítés.

    Selenium IDE beállítások párbeszédpanel Általános füle a Selenium Alapvető kiterjesztések fájlútvonal mező

  3. Kattints OK és indítsa újra Selenium SDI.

    Megerősítő kérdés jelenik meg, amikor Selenium Az IDE újraindul a kiterjesztésfájl betöltéséhez

  4. A kiterjesztést a parancslistában találod.

    Selenium IDE parancs legördülő menü, amely felsorolja az új textUpperCase parancsot a user-extensions.js fájlból

Selenium Alapvető kiterjesztések vs. Selenium IDE-bővítmények

A két kifejezést felcserélhetően használják a régebbi anyagokban, de különböző rétegeket írnak le, és a különbségtétel fontos, amikor eldönti, hová helyezze az egyéni logikát.

Aspect Selenium Magkiterjesztés Selenium IDE kiterjesztés
Mit nyújt ki A visszajátszás során használt Selenese parancskönyvtár Maga az IDE alkalmazás
Fájl betöltve user-extensions.js user-extensions-ide.js a régi IDE-ben, egy bővítménymanifeszt a jelenlegi IDE-ben
Tipikus felhasználás Új műveletek, hozzáférési módok és helymeghatározó stratégiák Új menüpontok, panelek, formátumok és a felvevő viselkedése
Megérintett tárgyak Selenium.prototype és PageBot.prototype IDE szerkesztő és rögzítő API-k
Futások ideje alatt Teszt végrehajtása Szerzői és rögzítési

Röviden, egy Core kiterjesztés megváltoztatja, hogy mit tehet egy teszt, míg egy IDE kiterjesztés megváltoztatja, hogy mit tehet az eszköz.

Hogyan a modern Selenium IDE Lecseréli a user-extensions.js-t

Az Firefox-bővítmény Selenium Az IDE leállt, amikor Firefox átkerült a WebExtensions architektúrára, és az IDE-t Chrome-ként írták át, Firefox és az Edge böngészőbővítmény. Ez az átírás eltávolította a fent látható Beállítások mezőt, így nincs hely, ahol egy user-extensions.js fájlra mutathatnánk. Két támogatott alternatíva ugyanazt a területet fedi le.

  • A parancsfájl végrehajtása parancs. Egyszeri alkalomra JavaSzkript, adj hozzá egyet szkript végrehajtása or aszinkron szkript végrehajtása közvetlenül a tesztben lépjen be, és az eredményt egy változóban tárolja. Ez a legközelebbi megfelelője egy kis egyéni műveletnek.
  • Egy bővítmény. Újrafelhasználható parancsok esetén készíts egy böngészőbővítményt, amely regisztrál egy manifest fájlt az IDE-ben. A manifest fájl minden új parancsot deklarál egy azonosítóval, egy névvel, egy opcionális típussal és dokumentációval, valamint új lokátorokat is deklarálhat.

A jegyzékfájl regisztrálása egy üzenet IDE-bővítményre küldésével történik, a hivatalos dokumentumban látható módon. Selenium IDE bővítmény dokumentációja.

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);

A névezési szabályok megmaradtak a migráció után is: egy bővítményparancsot továbbra is egyszer deklarálnak, majd minden tesztben újra felhasználnak, pontosan úgy, ahogy egy Core kiterjesztést.

Népszerű kiterjesztések és beépülő modulok, amelyeket a következőben használnak: Selenium IDE

Az alábbi bővítmények voltak a legszélesebb körben használtak a régi IDE-ben. Számos közülük, mint például a folyamatvezérlés és a képernyőkép hiba esetén, most be van építve a jelenlegi IDE-be, vagy karbantartott bővítményként érhető el.

Név Cél
Érdekes Tesztkészlet megjelölése kedvencként és futtatása egyetlen kattintással
Flex Pilot X Flex alapú automatizáláshoz
FlexMonkium Adobe Flex alapú felvételhez és lejátszáshoz tesztelés in Selenium IDE
Fájlnaplózás A naplók fájlba mentéséhez
flow Control A teszt végrehajtási folyamatának vezérléséhez
Jelölje ki az Elemeket Webes vezérlőelem kiemelése
Implicit várakozás Egy elemre egy bizonyos ideig várni
Képernyőkép sikertelenség esetén Készítsen képernyőképet a kudarcról
Vizsgálati eredmények Mentse el a próbaper egy kattintással egy tesztcsomag eredménye

A régi SeleniumA fájlokat tároló HQ letöltési oldal már nem létezik. A jelenlegi bővítmények és maga az IDE a következő helyről oszlanak meg: Selenium IDE projekt webhely és a Chrome-ból, Firefox és Edge kiegészítő áruházak.

Töltse le a Selenium Ebben az oktatóanyagban használt alapkiterjesztés

GYIK

A hagyományos név user-extensions.js, az IDE-szintű bővítmények pedig a user-extensions-ide.js nevet használták. A korábbi IDE lehetővé tette, hogy bármilyen elérési útra mutassunk, így a név inkább konvenció, mintsem szigorú követelmény volt, de ...ping könnyebben felismerhetővé teszi a megosztott lakosztályokat.

A prototípus függvények az IDE betöltése közben csak olvashatók, így az indítás után végrehajtott szerkesztést a program figyelmen kívül hagyja. Mentse el a fájlt, zárja be teljesen az IDE-t, majd nyissa meg újra. JavaA szkript szintaktikai hibája a teljes fájl csendes betöltését is megakadályozza.

Nyisd meg a böngésző konzolját, indítsd újra az IDE-t, majd figyeld a fájl elemzési hibáját. A fájl elejéhez hozzáadott console.log sorral ellenőrizheted, hogy egyáltalán betöltődött-e, mielőtt elkezdenéd a hibakeresést az egyes függvények között.

Csak a do előtaggal ellátott verziót írod. Selenium Az IDE levezeti az AndWait variánst, amely ugyanazt a műveletet hajtja végre, majd megvárja, amíg az oldal betöltődik. Használd az AndWait űrlapot, amikor a művelet elindítja a navigációt.

A gépi tanulási modellek képesek megrajzolni egy új parancs alaprajzát, és egy oldal pillanatképéből javasolni egy helymeghatározó stratégiát. A mesterséges intelligencia által támogatott helymeghatározó javítás itt is hasznos, mivel egy egyéni locateElementBy függvény pontosan az a kód, amelyik meghibásodik, amikor a jelölés megváltozik.

Részben. A Copilot reprodukálja a Selenium.prototype és PageBot.prototype mintákat, mivel ezek széles körben előfordulnak a régebbi adattárakban, de olyan segítő metódusokat hozhatnak létre, amelyek soha nem léteztek. Minden javasolt hívást ellenőrizzünk a Selenese parancsreferenciájával szemben, mielőtt megbíznánk benne.

Igen. Egy olyan fájl, amely a PageBot.prototype fájlban csak egy locateElementBy függvényt tartalmaz, érvényes. Az új stratégia ezután minden meglévő parancs számára elérhetővé válik, így a click, type és assert parancsok mind ezen keresztül célozhatják meg az elemeket.

Selenium Az RC elfogadott egy felhasználói kiterjesztésfájlt egy szerverkapcsolón keresztül, de az RC és Selenium A magokat eltávolították Selenium 3. A WebDrivernek nincs megfelelője a hook-hoz, így ugyanazt a logikát írjuk le a tesztelési keretrendszerünkben egy szokásos segítő metódusként.

Foglald össze ezt a bejegyzést a következőképpen: