Lokatori u Selenium
โก Pametni saลพetak
Lokatori u Selenium su naredbe koje usmjeravaju mehanizam za automatizaciju da identificira elemente grafiฤkog korisniฤkog suฤelja kao ลกto su tekstualni okviri, gumbi i potvrdni okviri. Ovaj priruฤnik objaลกnjava tipove lokatora ID-a, naziva, teksta poveznice, DOM-a i XPath-a s praktiฤnim primjerima, sintaktiฤkim pravilima i strategijama odabira za pouzdane skripte za web automatizaciju.

ล to su lokatori u Selenium?
Lokator je naredba koja usmjerava Selenium IDE ili Selenium WebDriver na ispravan GUI element, kao ลกto je tekstualni okvir, gumb, poveznica ili potvrdni okvir, na kojem se mora izvrลกiti radnja. Identificiranje ispravnog GUI elementa preduvjet je za izradu bilo kojeg pouzdanog skripta za automatizaciju. Meฤutim, toฤna identifikacija je izazovnija nego ลกto zvuฤi. Ponekad moลพete zavrลกiti u interakciji s pogreลกnim elementom ili bez ikakvog elementa. Kako biste to rijeลกili, Selenium nudi niz strategija lokatora koje omoguฤuju precizno ciljanje elemenata grafiฤkog korisniฤkog suฤelja.
Dok neke naredbe, poput naredbe "otvori", ne zahtijevaju lokator, veฤina Selenium Naredbe ovise o lokatorima elemenata. Izbor lokatora uvelike ovisi o vaลกoj aplikaciji koja se testira (AUT). U ovom tutorijalu ฤemo naizmjeniฤno koristiti Facebook i Mercury Demo stranica Tours (newtours.demoaut), na temelju lokatora koje svaka aplikacija podrลพava. Isto tako, u vaลกoj vlastitoj testiranje projekt, odabrat ฤete lokator elemenata u Selenium WebDriver na temelju strukture vaลกe aplikacije.
Lociranje po ID-u
Ovo je najฤeลกฤa metoda lociranja elemenata jer su ID-ovi namijenjeni da budu jedinstveni za svaki element na stranici. Kad god postoji atribut ID-a, trebao bi biti vaลก prvi izbor za brze, stabilne i ฤitljive testne skripte.
Target Format: id=id elementa
Za ovaj primjer koristit ฤemo Facebook demo stranicu jer Mercury Tours ne koristi ID atribute za glavna polja obrasca.
Korak 1) Koristite ovu demo stranicu https://demo.guru99.com/test/facebook.html za testiranje. Pregledajte tekstualni okvir "E-poลกta ili telefon" pomoฤu ugraฤenih alata za razvojne programere u pregledniku (pritisnite F12 u Chromeu, Edgeu ili Firefox) i zabiljeลพite njegov ID. U ovom sluฤaju, ID je โe-poลกtaโ.
Korak 2) Lansirati Selenium IDE i unesite "id=email" u Target okvir. Kliknite gumb Pronaฤi i primijetite da je tekstualni okvir โE-poลกta ili telefonโ oznaฤen ลพutom bojom sa zelenim okvirom, ลกto ukazuje na to Selenium IDE je ispravno locirao element.
Lociranje po imenu
Lociranje elemenata po imenu sliฤno je lociranju po ID-u, osim ลกto koristimo โime=โ prefiks umjesto toga. Ovaj pristup je koristan kada elementi nemaju ID, ali imaju definirani atribut imena.
Target Format: ime=ime elementa
Za sljedeฤu demonstraciju koristit ฤemo Mercury Obilasci jer svi znaฤajni elementi obrasca na web-mjestu nose atribut imena.
Korak 1) Doฤite na https://demo.guru99.com/test/newtours/ i upotrijebite alate za razvojne programere u pregledniku kako biste pregledali tekstualno polje โKorisniฤko imeโ. Zabiljeลพite njegov atribut name.
Ovdje je naziv elementa โkorisniฤkoImeโ.
Korak 2) In Selenium IDE, unesite "name=userName" u Target okvir i kliknite gumb Pronaฤi. Selenium IDE bi trebao pronaฤi tekstualni okvir Korisniฤko ime tako da ga oznaฤi.
Kako locirati element prema nazivu pomoฤu filtara
Filteri su korisni kada nekoliko elemenata dijeli isti atribut imena. Filteri su dodatni atributi koji se koriste za razlikovanje elemenata koji dijele identiฤan naziv. Bez filtera, Selenium bi se prema zadanim postavkama prikazao samo prvi odgovarajuฤi element.
Target Format: naziv=naziv_elementa filter=vrijednost_filtera
Proฤimo kroz primjer.
Korak 1) Prijavite se na Mercury Kule.
Prijavite se Mercury Obilasci koji koriste "tutorial" kao korisniฤko ime i lozinku. Stranica za pronalaลพenje letova trebala bi se pojaviti kao ลกto je prikazano dolje.
Korak 2) Koristite alate za razvojne programere za pregled atributa VALUE.
Primijetite da radio gumbi Povratno putovanje i Jednosmjerno putovanje dijele isti naziv "tripType". Meฤutim, imaju razliฤite atribute VALUE, pa svaku vrijednost moลพemo koristiti kao filter.
Korak 3) Kliknite na prvi redak u editoru.
- Prvo ฤemo pristupiti radio gumbu Jednosmjerni put. Kliknite prvi redak u Selenium IDE ureฤivaฤ.
- U okvir Naredba unesite naredbu โklikniโ.
- u Target U okvir unesite โname=tripType value=onewayโ. Dio โvalue=onewayโ sluลพi kao naลก filter.
Korak 4) Pritisnite gumb Pronaฤi.
Primijeti da Selenium IDE oznaฤava radio gumb Jednosmjerno zelenom bojom, potvrฤujuฤi da je elementu uspjeลกno pristupljeno putem njegovog atributa VALUE.
Korak 5) Odaberite radio gumb Jednosmjerno.
Pritisnite tipku "X" na tipkovnici za izvrลกavanje naredbe klika. Sada je odabran radio gumb Jednosmjerno.
Istu radnju moลพete izvesti na radio gumbu Povratno putovanje, ovaj put koristeฤi "name=tripType value=povratno putovanje" kao cilj.
Lociranje prema tekstu veze
Ova strategija lokatora primjenjuje se samo na tekstove hiperveza. Vezi pristupamo tako da ispred cilja stavimo prefiks "link=", nakon ฤega slijedi vidljivi tekst hiperveze. Ova metoda je vrlo ฤitljiva i dobro funkcionira za testiranje navigacije.
Target Format: link=tekst_linka
U sljedeฤem primjeru, pristupit ฤemo poveznici โREGISTRACIJAโ koja se nalazi na Mercury Poฤetna stranica Tours.
Korak 1)
- Prvo se uvjerite da ste odjavljeni iz Mercury Kule.
- Doฤite na Mercury Poฤetna stranica Tours.
Korak 2)
- Pomoฤu alata za razvojne programere provjerite poveznicu "REGISTRACIJA". Tekst poveznice prikazuje se izmeฤu poฤetne i zavrลกne oznake sidra.
- U ovom sluฤaju, tekst poveznice je โREGISTRACIJAโ. Kopirajte tekst poveznice.
Korak 3) Kopirajte tekst poveznice i zalijepite ga u Selenium IDE Target okvir. Dodajte mu ispred "link=".
Korak 4) Pritisnite gumb Pronaฤi. Selenium IDE ฤe ispravno istaknuti poveznicu REGISTER.
Korak 5) Za dodatnu provjeru unesite "clickAndWait" u okvir za naredbe i izvrลกite je. Selenium IDE ฤe uspjeลกno kliknuti na poveznicu REGISTRACIJA i odvesti vas na stranicu za registraciju prikazanu u nastavku.
Lociranje prema DOM-u (Document Object Model)
The Model objekta dokumenta (DOM), jednostavnim rijeฤima, opisuje kako su HTML elementi strukturirani kao stablo ฤvorova. Selenium IDE moลพe navigirati ovim stablom kako bi pristupio elementima stranice. Prilikom koriลกtenja ove metode, Target Okvir uvijek poฤinje s โdom=dokumentโฆโ. Prefiks โdom=" se obiฤno izostavlja jer Selenium IDE automatski interpretira bilo koju vrijednost koja poฤinje s "document" kao DOM putanju.
Postoje ฤetiri osnovna naฤina za lociranje elementa kroz DOM u Selenium:
- getElementById
- getElementsByName
- dom:name (odnosi se samo na elemente unutar imenovanog obrasca)
- dom:indeks
Lociranje prema DOM-u โ getElementById
Prvo istraลพimo metodu getElementById DOM-a u SeleniumOva metoda vraฤa jedan element usklaฤivanjem njegovog atributa ID.
Sintaksa
document.getElementById("id of the element")
- id elementa = vrijednost atributa ID elementa kojem se pristupa. Ova vrijednost uvijek mora biti unutar navodnika.
Korak 1) Koristite ovu demo stranicu https://demo.guru99.com/test/facebook.htmlIdite do njega i upotrijebite Alate za razvojne programere kako biste provjerili potvrdni okvir "Ostani prijavljen". Zabiljeลพite njegov ID.
ID koji bismo trebali koristiti je โpersist_boxโ.
Korak 2) Otvoren Selenium IDE i u Target U okvir unesite document.getElementById(โpersist_boxโ), a zatim kliknite Pronaฤi. Selenium IDE ฤe pronaฤi potvrdni okvir "Ostani prijavljen/a". Iako ne moลพe istaknuti unutraลกnjost potvrdnog okvira, okruลพuje element jarko zelenim rubom, kao ลกto je prikazano dolje.
Lociranje prema DOM-u โ getElementsByName
Metoda getElementById pristupa samo jednom elementu istovremeno, i to elementu s navedenim ID-om. Metoda getElementsByName ponaลกa se drugaฤije. Vraฤa niz elemenata koji dijele navedeni naziv. Pojedinaฤnim elementima pristupa se pomoฤu numeriฤkog indeksa koji poฤinje od 0.
Sintaksa
document.getElementsByName("name")[index]
- name = naziv elementa definiran njegovim atributom 'name'
- indeks = cijeli broj koji oznaฤava koji ฤe se element unutar niza getElementsByName koristiti.
Korak 1) Doฤite na Mercury Posjetite poฤetnu stranicu Toursa i prijavite se koristeฤi "tutorial" kao korisniฤko ime i lozinku. Preglednik ฤe uฤitati zaslon za pronalaลพenje letova.
Korak 2) Pomoฤu alata za razvojne programere provjerite tri radio gumba na dnu stranice (Ekonomska klasa, Poslovna klasa i Prva klasa). Primijetite da svi imaju isti naziv, โservClassโ.
Korak 3) Prvo, pristupimo radio gumbu "Ekonomska klasa". Od tri radio gumba, ovaj element se pojavljuje prvi, pa mu je indeks 0. U Selenium IDE, upiลกite document.getElementsByName(โservClassโ)[0] i kliknite gumb Pronaฤi. Selenium IDE ฤe ispravno prepoznati radio gumb ekonomske klase.
Korak 4) Promijenite indeksni broj na 1, tako da vaลก Target postaje document.getElementsByName(โservClassโ)[1]. Kliknite gumb Pronaฤi i Selenium IDE ฤe istaknuti radio gumb "Poslovna klasa" kao ลกto je prikazano dolje.
Lociranje prema DOM โ dom:naziv
Kao ลกto je ranije spomenuto, ova metoda se primjenjuje samo ako se element kojem pristupate nalazi unutar imenovanog obrasca. Put lokatora poฤinje na obrascu, a zatim se po imenu spuลกta do ciljnog elementa.
Sintaksa
document.forms["name of the form"].elements["name of the element"]
- naziv obrasca = vrijednost atributa name oznake obrasca koja sadrลพi element kojem ลพelite pristupiti
- ime elementa = vrijednost atributa imena elementa kojem ลพelite pristupiti
Korak 1) Doฤite na Mercury Poฤetna stranica Tours https://demo.guru99.com/test/newtours/ i upotrijebite Alate za razvojne programere za pregled tekstnog okvira Korisniฤko ime. Primijetite da se nalazi u obrascu pod nazivom "poฤetna stranica".
Korak 2) In Selenium IDE, upiลกite document.forms[โhomeโ].elements[โuserNameโ] i kliknite gumb Pronaฤi. Selenium IDE ฤe uspjeลกno pristupiti elementu.
Lociranje prema DOM โ dom:index
Ova metoda se primjenjuje ฤak i kada element nije unutar imenovanog obrasca jer koristi indeks obrasca umjesto njegovog imena. Ovo je korisno za naslijeฤene stranice ili automatski generirane obrasce gdje imenovanje nije dostupno.
Sintaksa
document.forms[index of the form].elements[index of the element]
- indeks obrasca = indeksni broj (poฤevลกi od 0) obrasca u odnosu na cijelu stranicu
- indeks elementa = indeksni broj (poฤevลกi od 0) elementa u odnosu na oblik koji ga sadrลพi
Pristupit ฤemo tekstualnom okviru โTelefonโ na Mercury Stranica za registraciju tura. Obrazac na ovoj stranici nema ni atribut imena ni atribut ID-a, pa je dobar primjer.
Korak 1) Doฤite na Mercury Posjetite stranicu za registraciju i pregledajte tekstualni okvir Telefon. Primijetite da okolni obrazac nema atribute ni ID ni ime.
Korak 2) Unesite document.forms[0].elements[3] u Selenium IDE Target okvir i kliknite gumb Pronaฤi. Selenium IDE ฤe ispravno pristupiti tekstualnom okviru Telefon.
Korak 3) Alternativno, moลพete koristiti naziv elementa umjesto njegovog indeksa za isti rezultat. Unesite document.forms[0].elements[โphoneโ] u Target okvir. Tekstualni okvir Telefon i dalje ฤe biti oznaฤen.
Lociranje pomoฤu XPath-a
XPath je jezik upita koji se koristi za navigaciju XML (Extensible Markup Language) ฤvorovima. Buduฤi da se HTML moลพe smatrati implementacijom XML-a, XPath takoฤer moลพe locirati HTML elemente. To je jedna od najmoฤnijih strategija lokatora u Selenium.
- Prednost: Moลพe pristupiti gotovo svakom elementu, ukljuฤujuฤi i one bez atributa klase, imena ili ID-a.
- Hendikep: To je najsloลพenija strategija lokatora zbog mnogih pravila i sintaktiฤkih varijacija.
Moderni alati za razvojne programere preglednika mogu automatski generirati XPath izraze. U Chromeu, Edgeu ili Firefox, desnom tipkom miลกa kliknite element u ploฤi Elementi i odaberite Kopiraj > Kopiraj XPath. U sljedeฤem primjeru pristupit ฤemo slici koja se ne moลพe locirati pomoฤu metoda koje smo ranije opisali.
Korak 1) Doฤite na Mercury Otvorite poฤetnu stranicu Toursa i upotrijebite Alate za razvojne programere kako biste pregledali naranฤasti pravokutnik desno od ลพutog okvira "Linkovi", kao ลกto je prikazano dolje.
Korak 2) Desnom tipkom miลกa kliknite HTML kod elementa, a zatim odaberite opciju "Kopiraj XPath".
Korak 3) In Selenium IDE, upiลกite jednu kosu crtu naprijed "/" u Target okvir, a zatim zalijepite XPath kopiran u prethodnom koraku. Ulaz u Target okvir sada treba zapoฤeti s dvije kose crte naprijed โ//โ.
Korak 4) Pritisnite gumb Pronaฤi. Selenium IDE ฤe istaknuti naranฤasti okvir, kao ลกto je prikazano dolje.
Zaลกto je vaลพan odabir pravog lokatora
Odabir ispravne strategije lokatora jedna je od najutjecajnijih odluka u Selenium automatizacija jer izravno utjeฤe na stabilnost skripte, brzinu izvrลกavanja i dugoroฤne troลกkove odrลพavanja. Loลกe odabran lokator moลพe uzrokovati nestabilne testove, laลพne kvarove i ฤeste preinake kad god se promijeni korisniฤko suฤelje aplikacije. Redoslijed preferencija koji preporuฤuju iskusni inลพenjeri automatizacije je prvo ID, zatim Naziv, nakon ฤega slijedi CSS selektor, Tekst poveznice i na kraju XPath.
Lokatori temeljeni na ID-u su najbrลพi jer je pretraลพivanje preglednika optimizirano za jedinstvene identifikatore. Lokatori temeljeni na imenu gotovo su jednako uฤinkoviti kada su imena jedinstvena. CSS selektori i XPath pruลพaju fleksibilnost, ali su obiฤno sporiji i krhkiji kada programeri refaktoriraju DOM. Tekst poveznice izvrstan je za navigacijske poveznice, ali nudi ograniฤenu ponovnu upotrebu.
Stabilna automatizacija takoฤer ovisi o suradnji s programerima. Kada testeri zatraลพe dosljedne i smislene ID ili data-* atribute tijekom pregleda koda, trajnost lokatora znaฤajno se poboljลกava. Izbjegavajte oslanjanje na automatski generirane ID-ove (poput onih koje proizvode okviri) jer se oni mogu mijenjati izmeฤu verzija. Davanjem prioriteta ฤitljivim, namjerno voฤenim lokatorima, timovi mogu odrลพati testne pakete odrลพivima i smanjiti tehniฤki dug kako se aplikacija razvija.
Najbolje prakse za pisanje pouzdanih lokatora
Pouzdani lokatori su temelj odrลพivog Selenium paket testova. Sljedeฤe prakse pomaลพu u smanjenju kvarova skripti, poboljลกanju ฤitljivosti i otpornosti testova na promjene korisniฤkog suฤelja.
- Preferirajte jedinstvene ID-ove: Uvijek prvo provjerite atribut ID-a. ID-ovi bi trebali biti jedinstveni unutar stranice i najuฤinkovitiji su izbor.
- Koristite semantiฤko ime i atribute data-*: Potaknite programere da dodaju stabilne atribute testiranja kao ลกto su data-testid ili data-qa. Oni ostaju dosljedni ฤak i kada se promijene CSS klase.
- Izbjegavajte apsolutni XPath: Apsolutne putanje poput /html/body/div[2]/div[3]/span lako se prekidaju. Koristite relativne XPath izraze s atributima kao ลกto je //input[@name='userName'].
- Kombinirajte atribute za preciznost: Kada jedan atribut nije jedinstven, kombinirajte viลกe atributa (na primjer, //button[@type='submit' i @name='login']) kako biste ciljali ispravan element.
- Mudro koristite tekst: Lokatori koji ovise o vidljivom tekstu mogu se prelomiti u razliฤitim jeziฤnim lokalizacijama. Koristite lokatore temeljene na tekstu samo kada je sadrลพaj stabilan i jednojeziฤan.
- Centralizirajte lokatore: Pohranite lokatore u klasu Page Object Model (POM) kako bi se aลพuriranja mogla vrลกiti na jednom mjestu, a ne u mnogim testnim skriptama.
- Validiraj u Alatima za razvojne programere: Prije dodavanja lokatora skripti, testirajte ga u konzoli preglednika koristeฤi $x(โ//xpathโ) za XPath ili document.querySelector za CSS kako biste potvrdili da vraฤa toฤno jedan element.
- Izbjegavajte lokatore temeljene na indeksu kad god je to moguฤe: Pozicije indeksa poput [3] ovise o redoslijedu elemenata. ฤak i manje promjene rasporeda mogu pomaknuti indeks i prekinuti skriptu.
Dosljednom primjenom ovih praksi, inลพenjeri automatizacije stvaraju testne pakete koji se mogu skalirati meฤu timovima i podnose ฤesta aลพuriranja korisniฤkog suฤelja uz minimalno odrลพavanje.





























