Mis on lokaatorid?
Locator on käsk, mis ütleb Selenium IDE-le, millised GUI-elemendid (näiteks tekstikast, nupud, märkeruudud jne) peavad töötama. Õigete GUI-elementide tuvastamine on automatiseerimise skripti loomise eeltingimus. Kuid GUI elementide täpne tuvastamine on keerulisem, kui see kõlab. Mõnikord töötate valede GUI-elementidega või üldse mitte! Seega pakub seleen GUI-elemendi täpseks leidmiseks mitmeid lokaatoreidCSS-i asukoha erinevad tüübid seleenis IDE-s
On käske, mis ei vaja lokaatorit (näiteks käsk "avatud"). Enamik neist vajab aga Seleniumi veebidraiveris elementide lokaatoreid.
Lokaatori valik sõltub suuresti teie testitavast rakendusest . Selles õpetuses vahetame Facebooki, uute tours.demoautide vahel nende rakenduste toetatavate lokaatorite põhjal. Samamoodi valite oma testimisprojektis oma rakenduse toe põhjal mis tahes ülalnimetatud elementide lokaatorid Seleeni veebidraiveris.
Asukoht ID järgi
See on kõige levinum viis elementide leidmiseks, kuna ID-d peaksid olema iga elemendi jaoks ainulaadsed.
Sihtvorming: id = elemendi id
Selle näite puhul kasutame testirakendusena Facebooki, kuna Mercury Tours ei kasuta ID-atribuute.
1. samm. Selle õpetuse loomisest alates on Facebook muutnud oma sisselogimislehe kujundust. Testimiseks kasutage seda demolehte http://demo.guru99.com/test/facebook.html. Kontrollige Firebugi abil tekstikasti „E-post või telefon” ja võtke teadmiseks selle ID. Sel juhul on ID "e-post".
Samm 2. Käivitage Selenium IDE ja sisestage väljale Siht "id = email". Klõpsake nuppu Leia ja märkige, et tekstikast E-post või telefon tõstetakse esile kollasega ja ääristatakse rohelisega, mis tähendab, et Selenium IDE suutis selle elemendi õigesti leida.
Asukoht nime järgi
Elementide leidmine nime järgi on väga sarnane ID-ga lokaliseerimisega, välja arvatud see, et kasutame selle asemel prefiksit "name =" .
Sihtvorming: nimi = elemendi nimi
Järgmisel demonstratsioonil kasutame nüüd Mercury Toursi, sest kõigil olulistel elementidel on nimed.
Samm 1. Navigeerige saidile http://demo.guru99.com/test/newtours/ ja kasutage Firebugi abil tekstikasti "Kasutajanimi". Pange tähele selle nime atribuuti.
Siin näeme, et elemendi nimi on "userName".
Samm 2. Seleeni IDE-s sisestage väljale Siht "name = userName" ja klõpsake nuppu Leia. Selenium IDE peaks suutma leida tekstivälja Kasutajanimi, tõstes selle esile.
Filtrite abil asukoha määramine nime järgi
Filtreid saab kasutada, kui mitmel elemendil on sama nimi. Filtrid on täiendavad atribuudid, mida kasutatakse samanimeliste elementide eristamiseks.
Sihtvorming : name = name_of_the_element filter = value_of_filter
Vaatame näite -
1. samm . Logige Mercury Toursile sisse, kasutades kasutajanime ja paroolina õpetust. See peaks viima teid allpool näidatud Flight Finderi lehele.
Samm 2. Firebugi kasutamisel märkige, et raadionuppudel Edasi-tagasi ja Üks suund on sama nimi "tripType". Kuid neil on erinevad VALUE atribuudid, nii et saame neid kõiki oma filtrina kasutada.
3. samm.
- Kõigepealt pääseme juurde raadionupule Üks suund. Klõpsake redaktori esimesel real.
- Sisestage seleeni IDE käsuväljale käsk "click".
- Sisestage väljale Siht "name = tripType value = oneway". Osa "väärtus = ühepoolne" on meie filter.
4. samm . Klõpsake nuppu Leia ja märkige, et Selenium IDE suudab rohelise värviga esile tõsta raadionupu Üks suund - see tähendab, et meil on võimalik selle elemendi VALUE abil edukalt juurde pääseda.
Samm 5. Selle klõpsamise käsu täitmiseks vajutage klaviatuuri klahvi "X". Pange tähele, et raadionupp Üks suund sai valitud.
Täpselt sama saate teha raadionupuga Edasi-tagasi, kasutades seekord sihtmärgiks "nimi = tripType väärtus = edasi-tagasi".
Leidmine lingi teksti järgi
Seda tüüpi CSS-i lokaator Seleenis kehtib ainult hüperlingi tekstide kohta. Lingile pääseme juurde, lisades oma sihtmärgile eesliite "link =" ja seejärel hüperlingi teksti.
Sihtvorming : link = LINK_TEXT
Selles näites pääseme juurde Mercury Toursi kodulehelt leitud lingile "REGISTRI".
Samm 1.
- Kõigepealt veenduge, et oleksite Mercury Toursist välja logitud.
- Minge Mercury Toursi kodulehele.
2. samm .
- Firebugi abil kontrollige linki "REGISTRI". Lingi tekst leitakse siltide ja siltide vahel.
- Sellisel juhul on meie lingitekst "REGISTREERU". Kopeerige lingi tekst.
3. samm . Kopeerige lingi tekst Firebugis ja kleepige see Selenium IDE väljale Sihtmärk. Selle eesliide on "link =".
Samm 4. Klõpsake nuppu Leia ja märkige, et Selenium IDE suutis REGISTRI lingi õigesti esile tõsta.
Samm 5. Edasiseks kontrollimiseks sisestage käsuväljale käsk "clickAndWait" ja käivitage see. Selenium IDE peaks saama edukalt sellel REGISTRI lingil klõpsata ja viia teid allpool näidatud registreerimislehele.
Asukoht CSS-valija abil
CSS-i valijad seleenis on stringimustrid, mida kasutatakse elemendi tuvastamiseks HTML-märgendi, ID, klassi ja atribuutide kombinatsiooni põhjal. CSS-i selektorite abil asukoha määramine seleenis on eelmistest meetoditest keerulisem, kuid see on edasijõudnud seleeni kasutajate kõige levinum asukoha määramise strateegia, kuna see pääseb ligi ka nendele elementidele, millel puudub ID või nimi.
Seleeni CSS-i selektoritel on palju vorminguid, kuid keskendume ainult kõige tavalisematele.
- Silt ja ID
- Silt ja klass
- Silt ja atribuut
- Silt, klass ja atribuut
- Sisemine tekst
Selle strateegia kasutamisel lisame kasti Siht ees alati "css =", nagu näidatakse järgmistes näidetes.
Asukoht CSS-valija järgi - silt ja ID
Jällegi kasutame selles näites Facebooki tekstikasti. Nagu mäletate, on sellel ID "e-post" ja me oleme sellele juba juurdepääsu saanud jaotises "ID järgi otsimine". Seekord kasutame samale elemendile ligipääsuks ID-ga Selenium CSS-i valijat.
Süntaks |
Kirjeldus |
---|---|
css = silt # id |
|
Pidage meeles, et ID-le eelneb alati räsimärk (#).
Samm 1. Liikuge saidile www.facebook.com. Uurige Firebugi abil tekstikasti „E-post või telefon”.
Siinkohal pange tähele, et HTML-märgend on "sisend" ja selle ID on "e-post". Nii et meie süntaks on "css = input # email".
Samm 2. Sisestage seleeni IDE kasti Sihtmärk "css = input # email" ja klõpsake nuppu Leia. Seleen IDE peaks saama seda elementi esile tõsta.
Asukoht CSS-valija järgi - silt ja klass
HTML-märgendi ja klassi nime kasutamine on seleenis CSS-i valija järgi sarnane sildi ja ID kasutamisega, kuid sellisel juhul kasutatakse räsi märgi asemel punkti (.).
Süntaks |
Kirjeldus |
---|---|
css = silt. klass |
|
Samm 1. Minge demolehele http://demo.guru99.com/test/facebook.html ja kontrollige Firebugi abil tekstikasti „E-post või telefon”. Pange tähele, et selle HTML-märgend on sisend ja klass on sisendtekst.
Samm 2. Seleeni IDE-s sisestage väljale Sihtmärk "css = input.inputtext" ja klõpsake nuppu Leia. Selenium IDE peaks suutma ära tunda tekstikasti E-post või Telefon.
Pange tähele, et kui mitmel elemendil on sama HTML-silt ja nimi, siis tuvastatakse ainult lähtekoodi esimene element . Firebugi abil kontrollige Facebooki tekstikasti Parool ja märkige, et sellel on sama nimi kui tekstikastil E-post või Telefon.
Põhjus, miks eelmises illustratsioonis tõsteti esile ainult tekstikast E-post või Telefon, on see, et see on esikohal Facebooki lehe allikas.
Asukoht CSS-valija järgi - silt ja atribuut
See strateegia kasutab HTML-märgendit ja juurdepääsu vajava elemendi konkreetset atribuuti.
Süntaks |
Kirjeldus |
---|---|
css = silt [atribuut = väärtus] |
|
Samm 1. Liikuge Mercury Toursi registreerimislehele (http://demo.guru99.com/test/newtours/register.php) ja kontrollige tekstikasti "Perekonnanimi". Pange tähele selle HTML-märgendit (antud juhul "sisend") ja nime ("perekonnanimi").
Samm 2. Seleeni IDE-s sisestage väljale Sihtmärk "css = input [nimi = perekonnanimi]" ja klõpsake nuppu Leia. Selenium IDE peaks saama edukalt juurde pääseda kastile Perekonnanimi.
Kui mitmel elemendil on sama HTML-märgend ja atribuut, tuvastatakse ainult esimene . See käitumine sarnaneb elementide leidmisega CSS-i selektorite abil, millel on sama silt ja klass.
Asukoht CSS-valija järgi - silt, klass ja atribuut
Süntaks | Kirjeldus |
---|---|
css = tag.class [atribuut = väärtus] |
|
Samm 1. Minge demolehele http://demo.guru99.com/test/facebook.html ja kontrollige sisendkastide „E-post või telefon” ja „Parool” abil Firebugi. Pange tähele nende HTML-märgendit, klassi ja atribuute. Selle näite jaoks valime nende atribuudid 'tabindex'.
Samm 2. Kõigepealt pääseme juurde tekstikasti „E-post või telefon”. Seega kasutame tabindexi väärtust 1. Sisestage "Selenium IDE" väljale Sihtmärk "css = input.inputtext [tabindex = 1]" ja klõpsake nuppu Leia. Sisestuskast „E-post või telefon” tuleks esile tõsta.
Samm 3. Parooli sisestuskasti avamiseks asendage lihtsalt atribuudi tabindex väärtus. Sisestage väljale Sihtmärk "css = input.inputtext [tabindex = 2]" ja klõpsake nuppu Leia. Selenium IDE peab suutma tekstikasti Parool edukalt tuvastada.
Asukoht CSS-valija järgi - sisemine tekst
Nagu olete märganud, antakse HTML-siltidele harva ID, nime või klassi atribuute. Niisiis, kuidas me neile juurde pääseme? Vastus on nende sisemiste tekstide kasutamine. Sisemised tekstid on tegelikud stringimustrid, mida HTML-i silt lehel kuvab.
Süntaks |
Kirjeldus |
---|---|
css = tag: sisaldab ("sisemine tekst") |
|
Samm 1. Navigeerige Mercury Toursi avalehele (http://demo.guru99.com/test/newtours/) ja kasutage Firebugit sildi "Parool" uurimiseks. Pange tähele selle HTML-i silti (mis antud juhul on font) ja pange tähele, et sellel pole klassi, ID või nime atribuute.
Samm 2. Sisestage selenium IDE väljale Sihtkoht css = font: tartalmazza ("Parool:") ja klõpsake nuppu Leia. Selenium IDE peaks saama juurde pääseda parooli sildile, nagu on näidatud alloleval pildil.
Samm 3. Seekord asendage sisemine tekst sõnaga "Boston", nii et teie sihtmärgiks saab nüüd "css = font: tartalmaz (" Boston ")". Klõpsake nuppu Otsi. Peaksite tähele panema, et silt "Bostonist San Franciscosse" muutub esiletõstetuks. See näitab teile, et Selenium IDE pääseb pikale sildile juurde ka siis, kui märkisite just selle sisemise teksti esimese sõna.
Asukoht DOMi järgi (dokumendi objekti mudel)
Dokumendiobjekti mudel (DOM) on HTML-elementide ülesehitus lihtsas mõttes. Seleen IDE on võimeline DOM-i kasutama lehe elementidele juurdepääsemiseks. Kui kasutame seda meetodit, algab meie sihtruut alati tähega "dom = document ..."; prefiks "dom =" eemaldatakse tavaliselt seetõttu, et Selenium IDE suudab kõike, mis algab märksõnaga "document", igatahes seleeni DOM-i siseselt teeks tõlgendada.
Seleenis DOM-i kaudu elemendi leidmiseks on neli põhiviisi:
- getElementById
- getElementsByName
- dom: nimi (kehtib ainult nimelise vormi elementide kohta)
- dom: indeks
Asukoht DOMi järgi - getElementById
Keskendugem esimesele meetodile - kasutades seleenis DOM-i getElementById-meetodit. Süntaks oleks:
Süntaks |
Kirjeldus |
---|---|
document.getElementById ("elemendi id") |
elemendi id = see on juurdepääsu vajava elemendi atribuudi ID väärtus. See väärtus peaks alati olema suludpaaris (""). |
Samm 1. Kasutage seda demolehte http://demo.guru99.com/test/facebook.html Navigeerige selle juurde ja kontrollige märkeruutu "Hoia mind sisselogituna" Firebugi abil. Pange tähele selle ID-d.
Näeme, et ID, mida peaksime kasutama, on "persist_box".
Samm 2. Avage Selenium IDE ja sisestage väljale Sihtmärk "document.getElementById (" persist_box ")" ja klõpsake nuppu Leia. Selenium IDE peaks suutma leida märkeruudu "Hoia mind sisselogituna". Kuigi see ei saa märkeruudu sisemust esile tõsta, võib Selenium IDE siiski ümbritseda elementi erkrohelise äärisega, nagu allpool näidatud.
Asukoht DOMi järgi - getElementsByName
Meetod getElementById pääseb korraga juurde ainult ühele elemendile ja see on teie määratud ID-ga element. Meetod getElementsByName on erinev. See kogub hulga elemente, millel on teie määratud nimi. Üksikutele elementidele pääsete juurde indeksiga, mis algab 0-st.
getElementById
|
||
getElementsByName
|
Süntaks |
Kirjeldus |
---|---|
document.getElementsByName ("nimi") [register] |
|
Samm 1. Liikuge Mercury Toursi kodulehele ja logige sisse, kasutades kasutajanime ja paroolina õpetust. Firefox peaks teid juhtima Flight Finderi ekraanile.
Samm 2. Kontrollige Firebugi abil lehe alaosas asuvat kolme raadionuppu (raadionupud Economy, Business class ja First class). Pange tähele, et neil kõigil on sama nimi, mis on "servClass".
Samm 3. Avage kõigepealt juurdepääs raadionupule "Economy class". Kõigist neist kolmest raadionupust on see element esimesena, seega on selle indeks 0. Seleeni IDE-sse tippige "document.getElementsByName (" servClass ") [0]" ja klõpsake nuppu Leia. Selenium IDE peaks suutma turistiklassi raadionupu õigesti tuvastada.
Samm 4. Muutke indeksinumber väärtusele 1, nii et teie sihtmärgist saab nüüd document.getElementsByName ("servClass") [1]. Klõpsake nuppu Leia ja Selenium IDE peaks suutma esile tõsta raadionuppu "Äriklassi", nagu allpool näidatud.
Asukoht DOM - dom järgi: nimi
Nagu varem mainitud, rakendatakse seda meetodit ainult siis, kui juurdepääsetav element sisaldub nimetatud vormis.
Süntaks |
Kirjeldus |
---|---|
document.forms ["vormi nimi"] .elements ["elemendi nimi"] |
|
Samm 1. Navigeerige Mercury Toursi kodulehele (http://demo.guru99.com/test/newtours/) ja kasutage Firebugi abil tekstikasti Kasutajanimi. Pange tähele, et see sisaldub vormis nimega "kodu".
2. samm . Seleeni IDE-s tippige "document.forms [" home "]. Elements [" userName "] ja klõpsake nuppu Leia. Seleen IDE peab saama elemendile edukalt juurde pääseda.
Asukoht DOM - dom: index järgi
Seda meetodit rakendatakse ka siis, kui element ei kuulu nimetatud vormi, kuna see kasutab vormi indeksit, mitte nime.
Süntaks |
Kirjeldus |
---|---|
document.forms [vormi register] .elements [elemendi register] |
|
Me pääseme Mercury Toursi registreerimise lehe tekstiväljale "Telefon". Selle lehe vormil pole nime ja ID-atribuuti, nii et see on hea näide.
Samm 1. Liikuge lehele Mercury Toursi registreerimine ja kontrollige tekstikasti Telefon. Pange tähele, et seda sisaldaval vormil puudub ID ja nime atribuudid.
Samm 2. Sisestage Selenium IDE väljale Sihtmärk "document.forms [0] .elements [3]" ja klõpsake nuppu Leia. Selenium IDE peaks saama telefoni tekstikasti õigesti juurde pääseda.
Samm 3. Teise võimalusena võite selle indeksi asemel kasutada elemendi nime ja saada sama tulemuse. Sisestage Selenium IDE väljale Sihtmärk "document.forms [0] .elements [" telefon "]. Tekstikast Telefon peaks ikkagi esile tõstetud olema.
Asukoht XPathi järgi
XPath on keel, mida kasutatakse XML-i (laiendatava märgistuskeele) sõlmede leidmisel. Kuna HTML-i võib mõelda kui XML-i rakendust, võime HTML-elementide leidmisel kasutada ka XPathi.
Eelis: Sellel on juurdepääs peaaegu kõigile elementidele, isegi neile, millel pole klassi, nime või ID atribuute.
Puudus: see on elementide tuvastamise kõige keerulisem meetod liiga paljude erinevate reeglite ja kaalutluste tõttu.
Õnneks suudab Firebug automaatselt genereerida XPath Selenium lokaatorid. Järgmises näites pääseme juurde pildile, millele pole varem käsitletud meetodite abil võimalik juurde pääseda.
Samm 1. Liikuge Mercury Toursi kodulehele ja kontrollige Firebugi abil oranži ristkülikut, mis asub kollasest kastist "Lingid" paremal. Vaadake allolevat pilti.
2. samm . Paremklõpsake elemendi HTML-koodil ja seejärel valige käsk "Kopeeri XPath".
Samm 3. Seleeni IDE-s tippige väljale Siht üks ettepoole kaldkriips "/", seejärel kleepige eelmises etapis kopeeritud XPath. Teie sihtkasti kirje peaks nüüd algama kahe kaldkriipsuga "//".
4. samm . Klõpsake nuppu Leia. Selenium IDE peaks suutma oranži kasti esile tõsta, nagu allpool näidatud.
Kokkuvõte
Lokaatori kasutamise süntaks
Meetod |
Sihtsüntaks |
Näide |
---|---|---|
ID järgi | id = elemendi id | id = e-post |
Nimepidi | nimi = elemendi nimi | nimi = kasutajaNimi |
Nime järgi filtrite abil | name = elemendi filtri nimi = filtri väärtus | nimi = tripType väärtus = ühesuunaline |
Lingi teksti järgi | link = link_tekst | link = REGISTREERU |
Silt ja ID | css = silt # id | css = sisend # meil |
Silt ja klass | css = silt. klass | css = input.inputtext |
Silt ja atribuut | css = silt [atribuut = väärtus] | css = sisend [nimi = perekonnanimi] |
Silt, klass ja atribuut | css = silt. klass [atribuut = väärtus] | css = input.inputtext [tabindex = 1] |