Selenium Põhilaiendid (User-Extensions.js)

⚡ Nutikas kokkuvõte

Selenium Põhilaiendid, mida nimetatakse ka kasutajalaienditeks, lisavad kohandatud toiminguid, ligipääsumehhanisme ja lokaliseerimisstrateegiaid Selenium IDE lisamise teel JavaSkripti funktsioonid Selenium ja PageBoti prototüüpobjektid IDE käivitamisel.

  • 🔘 Kolm sammast: Iga Selenese käsk on toiming, accessor või väide või lokaatori strateegia.
  • ☑️ Nimetamise reeglid: Toimingud algavad käsuga „do”, aksessorid käsuga „get” või „is” ja lokaatorid käsuga „locateElementBy”.
  • Vaba ootamise käsk: `doTextUpperCase` registreerimine paneb IDE automaatselt genereerima `textUpperCaseAndWaiti`.
  • 🧪 Laadimismehhanism: IDE loeb käivitamisel user-extensions.js faili, seega tuleb tööriist pärast iga muutmist taaskäivitada.
  • 🛠️ Pärandstaatus: Selenium Tuum ja Firefox-plugin IDE on maas ja Selenium 3 eemaldas kasutajalaienduste toe JAR-failidest.
  • 📊 Kaasaegne marsruut: Praegune brauserilaiendi IDE pakub hoopis pluginate manifesti ja execute script käsku.

Selenium Põhilaiendid ja fail user-extensions.js

Selenium Südamiku pikendused

Laienduste mõistmiseks mõistkem kõigepealt kolme sammast Selenium IDEIga IDE-sse salvestatud või sisestatud käsk kuulub ühte kolmest allpool loetletud kategooriast ja iga ekraanipilt näitab, kuidas see kategooria IDE käskude loendis kuvatakse.

  1. Tegevus: Millist toimingut te kasutajaliidese ekraanil teete?

    Selenium IDE käskude loend, mis näitab toimingukäsklusi, näiteks klõpsamist ja tippimist

  2. Juurdepääsud / väide: Millist kontrolli te kasutajaliidesest saadud andmete põhjal teete?

    Selenium IDE ligipääsu- ja kinnituskäsud, mille eesliiteks on get, is, verify ja assert

  3. Asukoha strateegia: Kuidas elemendi kasutajaliidesest leida.

    Selenium IDE sihtkastis on loetletud lokaatori strateegiad, näiteks ID, name, CSS ja XPath

Selenium IDE-ga on kaasas küps teeki, mis sisaldab juba palju toiminguid, ligipääsufunktsioone ja väiteid ning lokaliseerimisstrateegiaid.

Mõnikord vajab projekt aga funktsionaalsust, mida selles teegis pole. Sellisel juhul saate teeki laiendada, lisades oma kohandatud laienduse. Neid kohandatud laiendusi nimetatakse kasutajalaiend.

Näiteks oletame, et vajate toimingut, mis teisendab teksti enne veebielemendi sisestamist suurtähtedeks. Vaikimisi teegis sellist toimingut pole, seega loote oma kasutajalaiendi. Selles õpetuses saate teada, kuidas luua kasutajalaiend, mis teisendab teksti suurtähtedeks.

⚠️ Enne alustamist: siin kirjeldatud töövoog kuulub Selenium Tuum ja originaal Firefox-plugin Selenium IDE. Selenium Core on pensionile jäänud ja kasutajalaienduste tugi eemaldati. Selenium purgid sisse Selenium 3. Allolevad sammud ja kood on säilitatud, kuna suur hulk pärandseleeni tarkvarapakette sõltub neist endiselt; tänapäevast asendust kirjeldatakse hiljem selles artiklis.

Nõue luua Selenium Kasutaja laiendus

Kasutajalaiendi loomiseks Selenium IDE-s on vaja põhimõisteid JavaScript ja eelkõige JavaSkripti prototüübi objekt. Allolev diagramm näitab kahte prototüübi objekti, millega kasutajalaiend end sidub.

Diagramm Selenium Kasutajalaiendi poolt kasutatavad prototüübi ja PageBoti prototüübi objektid

Kasutajalaiendi loomiseks kirjutate JavaSkriptimeetodid ja nende lisamine Selenium objekti prototüübile ja PageBoti objekti prototüübile.

Kuidas Selenium IDE tuvastab kasutaja laienduse

Pärast kasutajalaiendi lisamist Selenium IDE ja IDE käivitamisel registreeritakse kõik nendes olevad funktsioonid JavaSkripti prototüübid on laaditud ja Selenium IDE tunneb igaühe ära nime järgi. Seetõttu ei ole järgmises jaotises olevad nimetamise eesliited stiilivalik – need on viis, kuidas IDE teie käsku liigitab.

Kasutajalaiendi loomine

Samm 1) Toiming – kõik toimingud algavad doKui toiming teisendab teksti suurtähtedeks, on selle nimi doTextUpperCaseKui lisate selle toimingumeetodi Selenium IDE loob ise vastava ootamismeetodi, seega doTextUpperCase toodab ka ootamisfunktsiooni tekstUpperCaseAndWaitMeetod saab vastu võtta kaks parameetrit.

Näide: tekstitoiming suurtähtedega

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. samm) Juurdepääsud / väide – kõik registreeritud ligipääsu saajad Selenium objekti prototüübi eesliide on saama or is, näiteks getValueFromCompoundTable või isValueFromCompoundTable. Juurdepääsufunktsioon saab aktsepteerida kahte parameetrit: ühe sihtmärgi ja teise väärtusvälja jaoks testjuhtumis. Allolev ekraanipilt näitab, kuidas need eesliited pärast laienduse laadimist välja näevad.

Selenium IDE, mis näitab kasutajalaiendist genereeritud get ja is ligipääsukäsklusi

Iga ligipääsuandja puhul Selenium IDE genereerib vastavad verifitseerimisfunktsioonid, mille eesliide on kontrollima ja väita, pluss ootefunktsioon, mille eesliide on ootama.

Näide: Suurtähtedega teksti juurdepääsufunktsioonide jaoks

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. samm) Lokaatori strateegia – kui soovite luua oma funktsiooni elemendi leidmiseks, laiendage PageBoti prototüüpi funktsiooniga, mille eesliide on asukohaelementi aluselSee võtab kaks parameetrit: lokaatori string ja dokument, milles elementi tuleks otsida.

Näide: suurtähtedega tekstiotsija jaoks

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

Salvesta kõik kolm funktsiooni ühte faili nimega kasutajalaiendid.jsFail on lihtne JavaSkript, seega piisab ükskõik millisest tekstiredaktorist.

Kuidas kasutada äsja loodud põhilaiendust

Faili laadimine on originaalis neljaastmeline ülesanne Firefox-plugin IDE. Iga allolev ekraanipilt vastab selle kõrval olevale nummerdatud sammule.

  1. Minna Selenium IDE ja klõpsake Valikud -> Valikud…

    Selenium IDE valikute menüü avati, et jõuda valikute dialoogiboksi

  2. aasta Üldine jaotises valige äsjaloodud faili asukoht Selenium Tuuma pikendus.

    Selenium IDE suvandite dialoogiboks Üldine vahekaart koos Selenium Põhilaiendite failitee väli

  3. Click OK ja taaskäivitage Selenium SDI.

    Kinnitusviip kuvatakse siis, kui Selenium IDE taaskäivitatakse laiendusfaili laadimiseks

  4. Laienduse leiate käskude loendist.

    Selenium IDE käskude rippmenüü, kus on loetletud uus textUpperCase käsk failist user-extensions.js

Selenium Põhilaiendused vs. Selenium IDE laiendused

Vanemates materjalides kasutatakse neid kahte terminit vaheldumisi, kuid need kirjeldavad erinevaid kihte ja see erinevus on oluline, kui otsustate, kuhu kohandatud loogika paigutada.

Aspekt Selenium Südamiku pikendus Selenium IDE laiendus
Mida see laiendab Selenese käskude kogu, mida kasutatakse taasesituse ajal IDE rakendus ise
Fail laaditud kasutajalaiendid.js user-extensions-ide.js pärand-IDE-s, pluginate manifest praeguses IDE-s
Tüüpiline kasutamine Uued toimingud, juurdepääsud ja lokaliseerimisstrateegiad Uued menüüelemendid, paneelid, vormingud ja salvesti käitumine
Puudutatud esemed Selenium.prototype ja PageBot.prototype IDE redaktori ja salvestaja API-d
Jookseb ajal Testi täitmine Autorlus ja salvestamine

Lühidalt, Core'i laiendus muudab testi võimalusi, samas kui IDE laiendus muudab tööriista võimalusi.

Kuidas moodne Selenium IDE asendab kasutaja-extensions.js faili

. Firefox-plugin Selenium IDE lakkas töötamast, kui Firefox koliti WebExtensionsi arhitektuurile ja IDE kirjutati ümber Chrome'iks, Firefox ja Edge'i brauserilaiend. See ümberkirjutus eemaldas ülaltoodud valikute väli, seega pole kohta, kuhu user-extensions.js failile viidata. Kaks toetatud alternatiivi hõlmavad sama eesmärki.

  • Skripti käivitamise käsk. Ühekordseks kasutamiseks JavaSkript, lisa käivita skript or käivita asünkroonne skript astu otse testi ja salvesta tulemus muutujasse. See on lähim vaste väikesele kohandatud toimingule.
  • Plugin. Korduvkasutatavate käskude jaoks looge brauserilaiend, mis registreerib IDE-s manifesti. Manifest deklareerib iga uue käsu koos ID, nime, valikulise tüübi ja dokumentatsiooniga ning võib deklareerida ka uusi lokaatoreid.

Manifest registreeritakse, saates IDE laiendusele teate, nagu on näidatud ametlikus dokumendis. Selenium IDE plugina dokumentatsioon.

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

Nimetamise distsipliin jääb migratsioonist alles: plugin-käsk deklareeritakse endiselt üks kord ja seejärel kasutatakse seda igas testis, täpselt nagu Core'i laiendust.

Populaarsed laiendused ja pluginad, mida kasutatakse Selenium IDE

Allpool olevad lisandmoodulid olid pärand-IDE-s kõige laialdasemalt kasutusel. Mitmed neist, näiteks voolukontroll ja ekraanipilt rikke korral, on nüüd praegusesse IDE-sse sisse ehitatud või saadaval hooldatud pluginatena.

Eesnimi Eesmärk
Lemmikud Testikomplekti lemmikuks märkimiseks ja selle ühe klõpsuga käivitamiseks
Flex Pilot X Flexipõhise automatiseerimise jaoks
FlexMonkium Adobe Flexi põhise salvestamise ja taasesituse jaoks testimine in Selenium IDE
Failide logimine Logide faili salvestamiseks
Vookontroll Testi täitmise voo juhtimiseks
Tõstke esile elemendid Veebi juhtelemendi esiletõstmiseks
Kaudne ootamine Elemendi ootamine teatud aja jooksul
Ekraanipilt ebaõnnestumise korral Tehke ebaõnnestumise kohta ekraanipilt
Testi tulemused Säästa testjuhtum testkomplekti tulemus ühe klõpsuga

Vana SeleniumNeid faile majutanud peakorteri allalaadimislehte enam ei eksisteeri. Praegused pluginad ja IDE ise levitatakse saidilt Selenium IDE projekti sait ja Chrome'ist Firefox ja Edge'i lisandmoodulite poed.

Lae alla Selenium Selles õpetuses kasutatud põhilaiendus

KKK

Tavapärane nimi on user-extensions.js ja IDE-taseme lisandmoodulid kasutasid user-extensions-ide.js. Vanem IDE lubas teil osutada mis tahes teele, seega oli nimi pigem kokkulepe kui range nõue, aga hoidkeping see muudab jagatud sviidid kergemini äratuntavaks.

Prototüübi funktsioonid on IDE laadimise ajal kirjutuskaitstud, seega pärast käivitamist tehtud muudatusi ignoreeritakse. Salvestage fail, sulgege IDE täielikult ja avage see uuesti. A JavaSkripti süntaksiviga takistab ka kogu faili vaikset laadimist.

Ava brauseri konsool ja käivita IDE uuesti, seejärel jälgi faili parsimisviga. Faili algusesse rea console.log lisamine kinnitab, kas see üldse laadis, enne kui hakkad üksikute funktsioonide silumist alustama.

Sa kirjutad ainult "do"-prefiksiga versiooni. Selenium IDE tuletab sulle AndWaiti variandi, mis teeb sama toimingu ja ootab seejärel lehe laadimise lõpetamist. Kasuta AndWaiti vormi, kui toiming käivitab navigeerimise.

Masinõppemudelid suudavad uue käsu jaoks malli koostada ja lehe hetktõmmise põhjal lokaatori strateegiat soovitada. Siin on kasulik ka tehisintellekti abil lokaatori parandamine, sest kohandatud funktsioon locateElementBy on just see kood, mis märgistuse muutumisel katki läheb.

Osaliselt. Copilot reprodutseerib Selenium.prototype ja PageBot.prototype mustrid, kuna neid leidub laialdaselt vanemates repositooriumides, kuid see võib leiutada abimeetodeid, mida pole kunagi olemas olnud. Enne soovitatud käsukäsu usaldamist kontrollige iga Selenese käskluse viite suhtes.

Jah. Fail, mis ei sisalda midagi peale locateElementBy funktsiooni PageBot.prototype'is, on kehtiv. Uus strateegia muutub seejärel kättesaadavaks kõigile olemasolevatele käskudele, seega saavad click, type ja assert sihtida elemente selle kaudu.

Selenium RC aktsepteeris kasutajalaiendite faili serverilüliti kaudu, aga RC ja Selenium Tuumad eemaldati Selenium 3. WebDriveril puudub samaväärne konks, seega on sama loogika kirjutatud teie testimisraamistikus tavalise abimeetodina.

Võta see postitus kokku järgmiselt: