Hakulaitteet sisään Selenium
⚡ Älykäs yhteenveto
Hakulaitteet sisään Selenium ovat komentoja, jotka ohjaavat automaatiomoottoria tunnistamaan graafisen käyttöliittymän elementtejä, kuten tekstiruutuja, painikkeita ja valintaruutuja. Tässä referenssissä selitetään ID-, NIMI-, LLINK-TEKSTI-, DOM- ja XPath-paikannintyypit käytännön esimerkkien, syntaksisääntöjen ja valintastrategioiden avulla luotettavia web-automaatioskriptejä varten.

Mitä paikantimet ovat Selenium?
Paikannuslaite on komento, joka ohjaa Selenium IDE- tai Selenium WebDriver oikeaan graafisen käyttöliittymän elementtiin, kuten tekstiruutuun, painikkeeseen, linkkiin tai valintaruutuun, jolle toiminto on suoritettava. Oikean graafisen käyttöliittymän elementin tunnistaminen on edellytys minkä tahansa luotettavan automaatioskriptin rakentamiselle. Tarkka tunnistaminen on kuitenkin haastavampaa kuin miltä se kuulostaa. Joskus saatat päätyä vuorovaikutukseen väärän elementin kanssa tai ilman elementtiä ollenkaan. Tämän ratkaisemiseksi Selenium tarjoaa erilaisia paikannusstrategioita, jotka mahdollistavat graafisen käyttöliittymän elementtien tarkan kohdistamisen.
Vaikka jotkin komennot, kuten ”open”-komento, eivät vaadi paikanninta, useimmat Selenium Komennot riippuvat elementtien paikantajista. Paikannin valinta riippuu pitkälti testattavasta sovelluksestasi (AUT). Tässä opetusohjelmassa vuorottelemme Facebookin ja Mercury Tours-demosivusto (newtours.demoaut) sen perusteella, mitä paikantimia kukin sovellus tukee. Samoin omassa testaus projektissa valitset elementin paikantimen Selenium WebDriver sovelluksesi rakenteen perusteella.
Sijainti tunnuksella
Tämä on yleisin tapa paikantaa elementtejä, koska tunnisteiden on tarkoitus olla yksilöllisiä jokaiselle sivun elementille. Aina kun tunnisteattribuutti on olemassa, sen tulisi olla ensisijainen valintasi nopeiden, vakaiden ja luettavien testiskriptien saamiseksi.
Target Format: id=elementin id
Tässä esimerkissä käytämme Facebook-demosivua, koska Mercury Tours ei käytä ID-attribuutteja päälomakekentissään.
Vaihe 1) Käytä tätä esittelysivua https://demo.guru99.com/test/facebook.html testausta varten. Tarkista ”Sähköposti tai puhelin” -tekstiruutu selaimesi sisäänrakennetuilla kehittäjätyökaluilla (paina F12-näppäintä Chromessa, Edgessä tai Firefox) ja merkitse sen tunnus. Tässä tapauksessa tunnus on ”sähköpostiosoite”.
Vaihe 2) Käynnistää Selenium IDE ja kirjoita "id=email". Target ruutua. Napsauta Etsi-painiketta ja huomaa, että ”Sähköposti tai puhelinnumero” -tekstiruutu on korostettu keltaisella ja siinä on vihreä reunus, mikä osoittaa, että Selenium IDE on paikantanut elementin oikein.
Paikannus nimen perusteella
Elementtien paikantaminen nimen perusteella on samanlaista kuin paikantaminen tunnuksen perusteella, paitsi että käytämme "nimi=" etuliite. Tämä lähestymistapa on hyödyllinen, kun elementeillä ei ole tunnusta, mutta niillä on määritelty nimiattribuutti.
Target Format: nimi=elementin nimi
Seuraavassa demonstraatiossa käytämme Mercury Kierrokset, koska kaikilla sivuston merkittävillä lomake-elementeillä on nimiattribuutti.
Vaihe 1) Navigoida johonkin https://demo.guru99.com/test/newtours/ ja tarkista ”Käyttäjänimi”-tekstiruutu selaimen kehittäjätyökaluilla. Huomioi sen nimiattribuutti.
Tässä elementin nimi on ”käyttäjänimi”.
Vaihe 2) In Selenium IDE, kirjoita "nimi=käyttäjänimi". Target -ruutua ja napsauta Etsi-painiketta. Selenium IDE:n pitäisi paikantaa Käyttäjänimi-tekstiruutu korostamalla se.
Kuinka paikantaa elementti nimen perusteella suodattimien avulla
Suodattimista on hyötyä, kun useilla elementeillä on sama nimiattribuutti. Suodattimet ovat lisäattribuutteja, joita käytetään erottamaan identtisen nimen omaavat elementit. Ilman suodattimia, Selenium käyttäisi oletuksena vain ensimmäistä vastaavaa elementtiä.
Target Format: nimi=elementin_nimi filter=suodattimen_arvo
Käydäänpä läpi esimerkki.
Vaihe 1) Kirjautua Mercury Retket.
Kirjaudu sisään Mercury Kierrokset, joissa käyttäjätunnuksena ja salasanana on ”tutorial”. Lentohaku-sivun pitäisi avautua alla olevan kuvan mukaisesti.
Vaihe 2) Tarkista VALUE-attribuutit kehittäjätyökaluilla.
Huomaa, että Meno-paluu- ja Yksisuuntaisilla radiopainikkeilla on sama nimi ”tripType”. Niillä on kuitenkin eri VALUE-attribuutit, joten voimme käyttää kutakin arvoa suodattimena.
Vaihe 3) Napsauta editorin ensimmäistä riviä.
- Käytämme ensin Yksisuuntainen radio -painiketta. Napsauta ensimmäistä riviä Selenium IDE-editori.
- Kirjoita Komento-ruutuun komento ”napsauta”.
- In Target Kirjoita kenttään ”name=tripType value=oneway”. ”value=oneway”-osa toimii suodattimenamme.
Vaihe 4) Napsauta Etsi-painiketta.
Huomaa, että Selenium IDE korostaa One Way -radiopainikkeen vihreällä, mikä vahvistaa, että elementtiin on päästy onnistuneesti sen VALUE-attribuutin kautta.
Vaihe 5) Valitse Yksisuuntainen-radiopainike.
Paina näppäimistön X-näppäintä suorittaaksesi napsautuskomennon. Yksisuuntainen radiopainike on nyt valittuna.
Voit suorittaa saman toiminnon Meno-paluu -radiopainikkeella, mutta tällä kertaa käyttämällä kohteena arvoa ”name=tripType value=roundtrip”.
Paikannus linkin tekstin perusteella
Tämä paikannusstrategia koskee vain hyperlinkkitekstejä. Pääsemme linkkiin lisäämällä kohteen etuliitteeseen "link=" ja sen jälkeen näkyvän hyperlinkkitekstin. Tämä menetelmä on erittäin luettava ja toimii hyvin navigointitestauksessa.
Target Format: linkki=linkki_teksti
Seuraavassa esimerkissä käytämme REKISTERÖIDY-linkkiä, joka löytyy osoitteesta Mercury Tours kotisivut.
Vaihe 1)
- Varmista ensin, että olet kirjautunut ulos Mercury Retket.
- Siirry Mercury Tours kotisivut.
Vaihe 2)
- Tarkista ”REGISTER”-linkki kehittäjätyökaluilla. Linkkiteksti näkyy avaavan ja sulkevan ankkuritagin välissä.
- Tässä tapauksessa linkin teksti on ”REKISTERÖIDY”. Kopioi linkin teksti.
Vaihe 3) Kopioi linkin teksti ja liitä se kenttään Selenium IDE Target laatikko. Liitä sen eteen "link=".
Vaihe 4) Napsauta Etsi-painiketta. Selenium IDE korostaa REGISTER-linkin oikein.
Vaihe 5) Vahvista lisää kirjoittamalla "clickAndWait" komentoruutuun ja suorittamalla se. Selenium IDE napsauttaa REKISTERÖIDY-linkkiä onnistuneesti ja vie sinut alla olevalle rekisteröintisivulle.
Paikannus DOM:n mukaan (asiakirjaobjektimalli)
Asiakirjaobjektimalli (DOM)yksinkertaisesti sanottuna kuvaa, miten HTML-elementit on jäsennelty solmujen puuna. Selenium IDE voi navigoida tässä puussa sivuelementtien käyttämiseksi. Tätä menetelmää käytettäessä Target laatikko alkaa aina merkeillä ”dom=dokumentti…”. Etuliite ”dom=” jätetään yleensä pois, koska Selenium IDE tulkitsee automaattisesti kaikki "document"-alkuiset arvot DOM-poluiksi.
DOM-elementin paikantamiseen on neljä perustapaa: Selenium:
- getElementById
- getElementsByName
- dom:name (koskee vain nimetyn lomakkeen elementtejä)
- dom:index
Paikannus DOM:lla – getElementById
Tutkitaanpa ensin DOM:n getElementById-metodia SeleniumTämä metodi palauttaa yhden elementin vertaamalla sitä sen ID-attribuuttiin.
Syntaksi
document.getElementById("id of the element")
- Elementin id = käytettävän elementin ID-attribuutin arvo. Tämä arvo on aina kirjoitettava lainausmerkkien sisään.
Vaihe 1) Käytä tätä esittelysivua https://demo.guru99.com/test/facebook.html. Siirry siihen ja tarkista Kehittäjätyökalujen avulla ”Pidä minut kirjautuneena” -valintaruutu. Huomioi sen tunnus.
Käyttämämme tunnus on ”persist_box”.
Vaihe 2) avoin Selenium IDE ja Target Kirjoita kenttään document.getElementById(“persist_box”) ja napsauta sitten Etsi. Selenium IDE paikantaa ”Pidä minut kirjautuneena” -valintaruudun. Vaikka se ei voi korostaa valintaruudun sisäosaa, se ympäröi elementin kirkkaanvihreällä reunuksella, kuten alla olevassa kuvassa näkyy.
Paikannus DOM:lla – getElementsByName
getElementById-metodi käyttää kerrallaan vain yhtä elementtiä, eli annetun ID:n omaavaa elementtiä. getElementsByName-metodi toimii eri tavalla. Se palauttaa taulukon elementtejä, joilla on annettu nimi. Yksittäisiin elementteihin päästään käsiksi käyttämällä numeerista indeksiä, joka alkaa nollasta.
Syntaksi
document.getElementsByName("name")[index]
- name = elementin nimi, joka on määritetty sen 'name'-attribuutilla
- index = kokonaisluku, joka osoittaa, mitä elementtiä getElementsByNamen taulukossa käytetään.
Vaihe 1) Siirry Mercury Toursin kotisivulle ja kirjaudu sisään käyttämällä käyttäjätunnusta ja salasanaa ”tutorial”. Selain lataa lentohaun näytön.
Vaihe 2) Tarkista kehittäjätyökaluilla sivun alareunassa olevat kolme valintanappia (turistiluokka, business-luokka ja ensimmäinen luokka). Huomaa, että niillä kaikilla on sama nimi, ”servClass”.
Vaihe 3) Ensin tarkastellaan ”Turistiluokka”-valintanappia. Kolmesta valintanapista tämä elementti esiintyy ensimmäisenä, joten sen indeksi on 0. Selenium IDE:ssä kirjoita document.getElementsByName(“servClass”)[0] ja napsauta Etsi-painiketta. Selenium IDE tunnistaa turistiluokan radiopainikkeen oikein.
Vaihe 4) Muuta indeksinumero arvoon 1, jotta Target tulee muotoon document.getElementsByName(“servClass”)[1]. Napsauta Etsi-painiketta ja Selenium IDE korostaa ”Business-luokka”-radiopainikkeen alla olevan kuvan mukaisesti.
Paikannus DOM:n mukaan – dom:name
Kuten aiemmin mainittiin, tämä menetelmä toimii vain, jos käyttämäsi elementti sijaitsee nimetyssä lomakkeessa. Paikanninpolku alkaa lomakkeesta ja porautuu sitten kohdeelementtiin nimen perusteella.
Syntaksi
document.forms["name of the form"].elements["name of the element"]
- lomakkeen nimi = sen lomaketagin nimiattribuutin arvo, joka sisältää käytettävän elementin
- elementin nimi = sen elementin name-attribuutin arvo, jota haluat käyttää
Vaihe 1) Navigoida johonkin Mercury Tours kotisivut https://demo.guru99.com/test/newtours/ ja tarkista Käyttäjänimi-tekstiruutu kehittäjätyökaluilla. Huomaa, että se on lomakkeessa nimeltä ”koti”.
Vaihe 2) In Selenium IDE:ssä kirjoita document.forms[“home”].elements[“userName”] ja napsauta Etsi-painiketta. Selenium IDE pääsee elementtiin onnistuneesti.
Paikannus DOM:n mukaan – dom:index
Tätä menetelmää käytetään, vaikka elementti ei olisi nimetyssä lomakkeessa, koska se käyttää lomakkeen indeksiä nimen sijaan. Tämä on hyödyllistä vanhoilla sivuilla tai automaattisesti luoduilla lomakkeilla, joissa nimeäminen ei ole käytettävissä.
Syntaksi
document.forms[index of the form].elements[index of the element]
- lomakkeen indeksi = lomakkeen indeksinumero (alkaen nollasta) koko sivun suhteen
- elementin indeksi = elementin indeksinumero (alkaen nollasta) suhteessa sitä sisältävään lomakkeeseen
Pääsemme "Puhelin"-tekstikenttään Mercury Matkan rekisteröintisivu. Tämän sivun lomakkeella ei ole nimeä eikä tunnistetta, joten se on hyvä esimerkki.
Vaihe 1) Siirry Mercury Matkan rekisteröintisivu ja tarkista Puhelin-tekstiruutu. Huomaa, että ympäröivällä lomakkeella ei ole ID- eikä name-attribuutteja.
Vaihe 2) Kirjoita document.forms[0].elements[3] kohtaan Selenium IDE Target -ruutua ja napsauta Etsi-painiketta. Selenium IDE käyttää Puhelin-tekstiruutua oikein.
Vaihe 3) Vaihtoehtoisesti voit käyttää elementin nimeä indeksin sijaan saman tuloksen saavuttamiseksi. Kirjoita document.forms[0].elements[“puhelin”] Target ruutu. Puhelin-tekstiruutu on edelleen korostettuna.
Paikannus XPathilla
XPath on kyselykieli, jota käytetään XML (Extensible Markup Language) -solmujen navigointiin. Koska HTML:ää voidaan pitää XML:n toteutuksena, XPath voi myös paikantaa HTML-elementtejä. Se on yksi tehokkaimmista paikannusstrategioista Selenium.
- Advantage: Se voi käyttää lähes mitä tahansa elementtiä, mukaan lukien ne, joilla ei ole luokka-, nimi- tai ID-attribuutteja.
- haitta: Se on monimutkaisin paikannusstrategia monien sääntöjen ja syntaksimuunnelmiensa vuoksi.
Nykyaikaiset selaimen kehittäjätyökalut voivat luoda XPath-lausekkeita automaattisesti. Chromessa, Edgessä tai Firefox, napsauta elementtiä hiiren kakkospainikkeella Elementit-paneelissa ja valitse Kopioi > Kopioi XPath. Seuraavassa esimerkissä käsittelemme kuvaa, jota ei voida paikantaa aiemmin käsitellyillä menetelmillä.
Vaihe 1) Siirry Mercury Tours-kotisivu ja tarkista keltaisen "Linkit"-ruudun oikealla puolella oleva oranssi suorakulmio kehittäjätyökaluilla, kuten alla on esitetty.
Vaihe 2) Napsauta elementin HTML-koodia hiiren kakkospainikkeella ja valitse sitten ”Kopioi XPath” -vaihtoehto.
Vaihe 3) In Selenium IDE, kirjoita yksi vinoviiva ”/” Target -ruutuun ja liitä sitten edellisessä vaiheessa kopioitu XPath. Merkintä kohdassa Target laatikon pitäisi nyt alkaa kahdella vinoviivalla "//".
Vaihe 4) Napsauta Etsi-painiketta. Selenium IDE korostaa oranssin laatikon, kuten alla on esitetty.
Miksi oikean paikannuslaitteen valinta on tärkeää
Oikean paikannusstrategian valinta on yksi vaikutusvaltaisimmista päätöksistä Selenium automaatiota, koska se vaikuttaa suoraan skriptien vakauteen, suoritusnopeuteen ja pitkän aikavälin ylläpitokustannuksiin. Huonosti valittu paikannuslaite voi aiheuttaa epätasaisia testejä, vääriä virheitä ja usein toistuvaa uudelleentyöstöä aina, kun sovelluksen käyttöliittymä muuttuu. Kokeneiden automaatioinsinöörien suosittelema mieltymysjärjestys on ensin ID, sitten Nimi, sitten CSS-valitsin, linkkiteksti ja lopuksi XPath.
ID-pohjaiset paikantimet ovat nopeimpia, koska selaimen haku on optimoitu yksilöiville tunnisteille. Nimipohjaiset paikantimet ovat lähes yhtä tehokkaita, kun nimet ovat yksilöllisiä. CSS-valitsimet ja XPath tarjoavat joustavuutta, mutta ne ovat yleensä hitaampia ja hauraampia, kun kehittäjät muokkaavat DOM:ia uudelleen. Linkkiteksti sopii erinomaisesti navigointilinkeille, mutta sen uudelleenkäyttö on rajoitettua.
Vakaa automaatio riippuu myös yhteistyöstä kehittäjien kanssa. Kun testaajat pyytävät yhdenmukaisia ja merkityksellisiä ID- tai data-*-attribuutteja koodikatselmusten aikana, paikannusominaisuuksien kestävyys paranee merkittävästi. Vältä automaattisesti luotettujen ID-tunnusten (kuten kehysten tuottamien) käyttöä, koska ne voivat muuttua koontiversioiden välillä. Priorisoimalla luettavia, tarkoitusperäpohjaisia paikannusominaisuuksia tiimit voivat pitää testipaketit ylläpidettävinä ja vähentää teknistä velkaa sovelluksen kehittyessä.
Parhaat käytännöt luotettavien paikantimien kirjoittamiseen
Luotettavat paikantimet ovat ylläpidettävän perusta Selenium testipaketti. Seuraavat käytännöt auttavat vähentämään skriptien virheitä, parantamaan luettavuutta ja tekemään testeistä kestäviä käyttöliittymän muutoksia vastaan.
- Suosi yksilöllisiä tunnisteita: Tarkista aina ensin ID-attribuutti. ID-attribuutin on tarkoitus olla yksilöllisiä sivulla, ja se on tehokkain vaihtoehto.
- Käytä semanttista Name- ja data-*-attribuuttia: Kannusta kehittäjiä lisäämään vakaita testiattribuutteja, kuten data-testid tai data-qa. Nämä pysyvät samoina, vaikka CSS-luokat muuttuisivat.
- Vältä absoluuttista XPath-lauseketta: Absoluuttiset polut, kuten /html/body/div[2]/div[3]/span, rikkoutuvat helposti. Käytä suhteellisia XPath-lausekkeita, joissa on attribuutteja, kuten //input[@name='käyttäjäNimi'].
- Yhdistä attribuutit tarkkuuden saavuttamiseksi: Kun yksittäinen attribuutti ei ole yksilöllinen, yhdistä useita attribuutteja (esimerkiksi //button[@type='submit' ja @name='login']) kohdistaaksesi oikeaan elementtiin.
- Käytä tekstiä viisaasti: Näkyvää tekstiä käyttävät paikantimet eivät välttämättä toimi eri kielillä. Käytä tekstipohjaisia paikantimia vain, kun sisältö on vakaata ja yksikielistä.
- Keskitä paikantimet: Tallenna paikantimet Page Object Model (POM) -luokkaan, jotta päivitykset voidaan tehdä yhdessä paikassa useiden testiskriptien sijaan.
- Vahvista kehittäjätyökaluissa: Ennen kuin lisäät paikantimen skriptiin, testaa sitä selainkonsolissa käyttämällä $x(“//xpath”) -metodia XPath-lausekkeelle tai document.querySelector -metodia CSS-lausekkeelle varmistaaksesi, että se palauttaa täsmälleen yhden elementin.
- Vältä indeksipohjaisia paikantimia mahdollisuuksien mukaan: Indeksien sijainnit, kuten [3], riippuvat elementtien järjestyksestä. Jopa pienet asettelun muutokset voivat siirtää indeksiä ja rikkoa skriptin.
Soveltamalla näitä käytäntöjä johdonmukaisesti automaatioinsinöörit luovat testipaketteja, jotka skaalautuvat tiimien välille ja selviävät usein toistuvista käyttöliittymäpäivityksistä minimaalisella ylläpidolla.





























