Selenium Ydinlaajennukset (User-Extensions.js)

⚡ Älykäs yhteenveto

Selenium Ydinlaajennukset, joita kutsutaan myös käyttäjälaajennuksiksi, lisäävät mukautettuja toimintoja, aksessoreita ja paikannusstrategioita Selenium IDE liittämällä JavaSkriptifunktiot Selenium ja PageBot-prototyyppiobjektit IDE:n käynnistyessä.

  • 🔘 Kolme pilaria: Jokainen Selenese-komento on toiminto, aksessori tai väittämä tai paikanninstrategia.
  • ☑️ Nimeämissäännöt: Toiminnot alkavat do-operaattorilla, aksessorit get- tai is-operaattorilla ja paikantimet locateElementBy-operaattorilla.
  • ✅ Vapaa odotus -komento: doTextUpperCase-metodin rekisteröiminen saa IDE:n luomaan textUpperCaseAndWait-metodin automaattisesti.
  • 🧪 Kuormitusmekanismi: IDE lukee user-extensions.js-tiedoston käynnistyksen yhteydessä, joten työkalu on käynnistettävä uudelleen jokaisen muokkauksen jälkeen.
  • 🛠️ Perintötila: Selenium Ydin ja Firefox-plugin IDE poistettiin käytöstä, ja Selenium 3 poisti käyttäjälaajennusten tuen jar-tiedostoista.
  • 📊 Moderni reitti: Nykyinen selainlaajennusten IDE näyttää sen sijaan laajennusluettelon ja suoritusskriptikomennon.

Selenium Ydinlaajennukset ja user-extensions.js-tiedosto

Selenium Ydinlaajennukset

Ymmärtääksemme laajennuksia, meidän on ensin ymmärrettävä kolme pilaria Selenium IDEJokainen IDE:hen tallentamasi tai kirjoittamasi komento kuuluu johonkin alla olevista kolmesta luokasta, ja jokainen kuvakaappaus näyttää, miltä kyseinen luokka näyttää IDE-komentoluettelossa.

  1. Toiminta: Mitä toimintoa suoritat käyttöliittymänäytössä.

    Selenium IDE-komentoluettelo, joka näyttää toimintokomennot, kuten napsautuksen ja kirjoittamisen

  2. Accessorit / Väite: Mitä tarkistuksia teet käyttöliittymästä saamillesi tiedoille.

    Selenium IDE-käyttö- ja assertion-komennot, joiden etuliitteinä ovat get, is, verify ja assert

  3. Paikanninstrategia: Näin löydät elementin käyttöliittymästä.

    Selenium IDE-kohdelaatikko, joka listaa paikannusstrategioita, kuten id, name, css ja xpath

Selenium IDE toimitetaan kypsän kirjaston kanssa, joka sisältää jo runsaasti toimintoja, aksessoreita ja väitteitä sekä paikannusstrategioita.

Joskus projekti kuitenkin tarvitsee toimintoja, joita ei ole kyseisessä kirjastossa. Tällaisessa tilanteessa voit laajentaa kirjastoa lisäämällä oman mukautetun laajennuksen. Näitä mukautettuja laajennuksia kutsutaan käyttäjälaajennus.

Oletetaan esimerkiksi, että tarvitset toiminnon, joka muuntaa tekstin isoiksi kirjaimiksi ennen sen täyttämistä verkkoelementtiin. Tällaista toimintoa ei ole oletuskirjastossa, joten luot oman käyttäjälaajennuksen. Tässä opetusohjelmassa opit rakentamaan käyttäjälaajennuksen, joka muuntaa tekstin isoiksi kirjaimiksi.

⚠️ Ennen kuin aloitat: tässä kuvattu työnkulku kuuluu Selenium Ydin ja alkuperäinen Firefox-laajennus Selenium IDE. Selenium Core on poistettu käytöstä, ja käyttäjälaajennusten tuki on poistettu. Selenium purkit sisään Selenium 3. Alla olevat vaiheet ja koodi on säilytetty, koska suuri määrä vanhoja Selenese-ohjelmistopaketteja on edelleen riippuvaisia ​​niistä; moderni korvaaja kuvataan myöhemmin tässä artikkelissa.

Vaatimus luoda Selenium Käyttäjän laajennus

Käyttäjälaajennuksen luominen kohteelle Selenium IDE:ssä tarvitset peruskäsitteet JavaKäsikirjoitus ja erityisesti JavaSkriptin prototyyppiobjekti. Alla oleva kaavio näyttää kaksi prototyyppiobjektia, joihin käyttäjälaajennus liittyy.

Kaavio Selenium käyttäjälaajennuksen käyttämät prototyyppi- ja PageBot-prototyyppiobjektit

Luodaksesi käyttäjälaajennuksesi, kirjoita JavaSkriptimenetelmät ja lisää ne Selenium objektin prototyyppiin ja PageBot-objektin prototyyppiin.

Miten Selenium IDE tunnistaa käyttäjälaajennuksen

Kun käyttäjätunnus on lisätty Selenium IDE ja IDE käynnistetään, jokainen niille rekisteröity funktio JavaSkriptiprototyypit ladataan ja Selenium IDE tunnistaa jokaisen nimeltä. Siksi seuraavan osion nimeämisen etuliitteet eivät ole tyylivalinta – ne ovat tapa, jolla IDE luokittelee komentosi.

Käyttäjälaajennuksen luominen

Vaihe 1) Toimi – kaikki toimenpiteet alkavat doJos toiminto muuntaa tekstin isoksi kirjaimiksi, sen nimi on doTextUpperCaseKun lisäät tämän toimintometodin Selenium IDE, IDE itse luo vastaavan odotusmetodin, joten doTextUpperCase tuottaa myös odotusfunktion textUpperCaseAndWaitMetodi voi hyväksyä kaksi parametria.

Esimerkki: Tekstin isot kirjaimet

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

Vaihe 2) Accessorit / Väite – kaikki järjestelmään rekisteröidyt käyttäjät Selenium objektin prototyypin etuliitteenä on saada or is, esimerkiksi getValueFromCompoundTable tai isValueFromCompoundTable. Accessori voi hyväksyä kaksi parametria, yhden kohteelle ja toisen testitapauksen arvokentälle. Alla oleva kuvakaappaus näyttää, miltä nämä etuliitteet näyttävät, kun laajennus on ladattu.

Selenium IDE, joka näyttää käyttäjälaajennuksesta luodut get- ja is-käyttökomennot

Jokaiselle aksessorille Selenium IDE luo vastaavat varmennusfunktiot, joiden etuliitteenä on todentaa ja puolustaa, sekä odotusfunktio, jonka etuliitteenä on odota.

Esimerkki: Isojen kirjainten tekstin aksessorit

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

Vaihe 3) Paikanninstrategia – jos haluat luoda oman funktion elementin paikantamiseksi, laajenna PageBot-prototyyppiä funktiolla, jonka etuliitteenä on locateElementBySe ottaa kaksi parametria: paikannusmerkkijonon ja dokumentin, josta elementtiä haetaan.

Esimerkki: Tekstin suuraakkosia varten

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

Tallenna kaikki kolme funktiota yhteen tiedostoon nimeltä käyttäjälaajennukset.jsTiedosto on selkeä JavaSkripti, joten mikä tahansa tekstieditori riittää.

Kuinka käyttää uutta ydinlaajennusta

Tiedoston lataaminen on alkuperäisessä nelivaiheinen tehtävä Firefox-plugin IDE. Jokainen alla oleva kuvakaappaus vastaa sen vieressä olevaa numeroitua vaihetta.

  1. Mene Selenium IDE ja napsauta Asetukset -> Asetukset…

    Selenium IDE-asetukset-valikko avattiin Asetukset-valintaikkunan avaamiseksi

  2. In general osiossa valitse juuri luodun Selenium Ytimen laajennus.

    Selenium IDE-asetukset-valintaikkunan Yleiset-välilehti Selenium Ydinlaajennusten tiedostopolkukenttä

  3. Napauta OK ja käynnistä uudelleen Selenium SDI.

    Vahvistuskehote näytetään, kun Selenium IDE käynnistetään uudelleen laajennustiedoston lataamiseksi

  4. Löydät laajennuksen komentoluettelosta.

    Selenium IDE-komennon alasvetovalikko, jossa luetellaan uusi textUpperCase-komento user-extensions.js-tiedostosta

Selenium Ydinlaajennukset vs. Selenium IDE-laajennukset

Näitä kahta termiä käytetään vanhemmissa materiaaleissa keskenään vaihdellen, mutta ne kuvaavat eri tasoja, ja erolla on merkitystä, kun päätät, mihin sijoitat mukautetun logiikan.

Aspect Selenium Ytimen laajennus Selenium IDE-laajennus
Mitä se laajentaa Toiston aikana käytetty Selenesen komentokirjasto Itse IDE-sovellus
Tiedosto ladattu käyttäjälaajennukset.js user-extensions-ide.js vanhassa IDE:ssä, laajennusten luettelo nykyisessä IDE:ssä
Tyypillinen käyttö Uudet toiminnot, aksessorit ja paikannusstrategiat Uudet valikkokohdat, paneelit, formaatit ja tallentimen toiminta
Kosketetut esineet Selenium.prototype ja PageBot.prototype IDE-editorin ja -tallennimen API-rajapinnat
Toimii aikana Testin suorittaminen Kirjoittaminen ja tallentaminen

Lyhyesti sanottuna Core-laajennus muuttaa testin ominaisuuksia, kun taas IDE-laajennus muuttaa työkalun ominaisuuksia.

Miten moderni Selenium IDE korvaa user-extensions.js:n

Firefox-laajennus Selenium IDE lakkasi toimimasta, kun Firefox siirrettiin WebExtensions-arkkitehtuuriin ja IDE kirjoitettiin uudelleen Chromeksi, Firefox ja Edge-selainlaajennus. Uudelleenkirjoitus poisti yllä olevan Asetukset-kentän, joten user-extensions.js-tiedostoon ei ole enää osoitetta. Kaksi tuettua vaihtoehtoa kattavat saman aiheen.

  • Suorita skripti -komento. Kertaluonteista JavaSkripti, lisää suorita skripti or suorita asynkroninen komentosarja astu suoraan testiin ja tallenna tulos muuttujaan. Tämä on lähimpänä pientä mukautettua toimintoa.
  • Lisäosa. Uudelleenkäytettäviä komentoja varten luo selainlaajennus, joka rekisteröi manifestin IDE:hen. Manifestissa määritetään jokainen uusi komento tunnuksella, nimellä, valinnaisella tyypillä ja dokumentaatiolla, ja se voi myös määrittää uusia paikantimia.

Manifest rekisteröidään lähettämällä viesti IDE-laajennukseen, kuten virallisessa lomakkeessa näkyy. Selenium IDE-laajennuksen dokumentaatio.

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

Nimeämiskäytäntö säilyy migraation jälkeenkin: lisäosien komento ilmoitetaan edelleen kerran ja sitä käytetään uudelleen jokaisessa testissä, aivan kuten Core-laajennustakin.

Suosittuja laajennuksia ja lisäosia, joita käytetään Selenium IDE

Alla olevat lisäosat olivat yleisimmin käytettyjä vanhassa IDE:ssä. Useat niistä, kuten vuonhallinta ja kuvakaappaus virhetilanteissa, ovat nyt sisäänrakennettuina nykyiseen IDE:hen tai saatavilla ylläpidettyinä lisäosina.

Nimi Tarkoitus
Suosikit Testipaketin merkitseminen suosikiksi ja sen suorittaminen yhdellä napsautuksella
Flex Pilot X Flex-pohjaiseen automaatioon
FlexMonkium Adobe Flex -pohjaiseen tallennukseen ja toistoon testaus in Selenium IDE
Tiedostojen kirjaaminen Lokien tallentamiseen tiedostoon
Flow Control Testin suoritusvirran ohjaamiseen
Korosta Elementit Verkkosäätimen korostaminen
Epäsuora odota Odottaa elementtiä tietyn ajan
Kuvakaappaus epäonnistumisesta Ota kuvakaappaus epäonnistumisesta
Testitulokset Tallenna testitapaus testisarjan tulos yhdellä napsautuksella

Vanha SeleniumNäitä tiedostoja isännöinyt HQ-lataussivu ei ole enää olemassa. Nykyiset laajennukset ja itse IDE jaellaan osoitteesta Selenium IDE-projektisivusto ja Chromesta, Firefox ja Edge-lisäosakaupat.

Lataa Selenium Tässä opetusohjelmassa käytetty ydinlaajennus

UKK

Perinteinen nimi on user-extensions.js, ja IDE-tason lisäosat käyttivät user-extensions-ide.js:ää. Vanhassa IDE:ssä voit osoittaa mihin tahansa polkuun, joten nimi oli pikemminkin sopimus kuin ehdoton vaatimus, mutta pidäping se helpottaa jaettujen sviittien tunnistamista.

Prototyyppifunktiot ovat vain luettavissa IDE:n latautumisen aikana, joten käynnistyksen jälkeen tehtyjä muokkausta ei oteta huomioon. Tallenna tiedosto, sulje IDE kokonaan ja avaa se uudelleen. JavaSkriptin syntaksivirhe estää myös koko tiedoston latautumisen hiljaisesti.

Avaa selainkonsoli ja käynnistä IDE uudelleen. Tarkkaile sitten tiedoston jäsennysvirhettä. Lisäämällä console.log-rivin tiedoston alkuun voit varmistaa, latautuiko tiedosto ollenkaan, ennen kuin aloitat yksittäisten funktioiden virheenkorjauksen.

Kirjoitat vain do-etuliitteellä varustetun version. Selenium IDE johtaa AndWait-variantin puolestasi, joka suorittaa saman toiminnon ja odottaa sitten sivun latautumisen päättymistä. Käytä AndWait-lomaketta, kun toiminto käynnistää navigoinnin.

Koneoppimismallit voivat luonnostella uuden komennon pohjapiirroksen ja ehdottaa paikannusstrategiaa sivun tilannevedoksesta. Tekoälyavusteinen paikannuskorjaus on myös tässä hyödyllinen, koska mukautettu locateElementBy-funktio on juuri se koodi, joka rikkoutuu, kun merkinnät muuttuvat.

Osittain. Copilot toistaa Selenium.prototype- ja PageBot.prototype-malleja, koska niitä esiintyy paljon vanhemmissa repositorioissa, mutta se saattaa keksiä apumetodeja, joita ei ole koskaan ollut olemassa. Tarkista jokainen ehdotettu kutsu Selenese-komentoviitteettä vasten ennen kuin luotat siihen.

Kyllä. Tiedosto, joka sisältää vain locateElementBy-funktion PageBot.prototype-tiedostossa, on kelvollinen. Uusi strategia tulee sitten kaikkien olemassa olevien komentojen saataville, joten click, type ja assert voivat kaikki kohdistaa elementteihin sen kautta.

Selenium RC hyväksyi käyttäjätunnistetiedoston palvelinkytkimen kautta, mutta RC ja Selenium Ydin poistettiin vuonna Selenium 3. WebDriverilla ei ole vastaavaa koukkua, joten sama logiikka kirjoitetaan tavallisena apumetodina testikehyksessäsi.

Tiivistä tämä viesti seuraavasti: