CSS-velger i Selenium
โก Smart oppsummering
CSS-velger i Selenium er en kraftig lokaliseringsstrategi som identifiserer elementer ved hjelp av HTML-tagger, ID-er, klasser, attributter og indre tekstmรธnstre. Denne ressursen forklarer alle CSS-selektortyper med trinnvise eksempler for Selenium SDI.

Hva er en CSS-selektor i Selenium?
A CSS-velger i Selenium er et strengmรธnster som identifiserer et webelement gjennom en kombinasjon av HTML-tag, ID, klasse og attributter. CSS-selektorer er litt mer avanserte enn รฅ finne etter ID eller navn, men de er den mest populรฆre strategien blant erfarne Selenium brukere fordi de kan nรฅ elementer som ikke har noen ID- eller navneattributt i det hele tatt.
CSS-velgere i Selenium finnes i mange former, men denne veiledningen fokuserer pรฅ de fem vanligste mรธnstrene som brukes i Selenium ID:
- Tag og ID
- Tag og klasse
- Tag og attributt
- Tag, klasse og attributt
- Indre tekst
Nรฅr du bruker denne strategien i Selenium IDE, alltid prefiks Target boks med ยซcss=ยซsom vist i alle eksemplene nedenfor.ยป
Hvorfor bruke CSS-selektorer i Selenium?
CSS-selektorer er den foretrukne locator-strategien for mange Selenium automatiseringsingeniรธrer fordi de balanserer hastighet, fleksibilitet og lesbarhet. Moderne webapplikasjoner bruker ofte dynamisk genererte ID-er eller fjerner navneattributter helt, noe som gjรธr at CSS-selektorer er den eneste pรฅlitelige mรฅten รฅ mรฅlrette mot et bestemt element pรฅ siden.
De viktigste fordelene med รฅ bruke CSS-selektorer inkluderer:
- Ytelse: CSS-selektorer behandles av nettleserens innebygde motor, sรฅ de kjรธres raskere enn tilsvarende XPath-uttrykk, spesielt i eldre nettlesere som Internet Explorer.
- Fleksibilitet: De kombinerer tagg, klasse, attributt og delvis samsvarslogikk, slik at testere kan mรฅlrette elementer som mangler en stabil ID.
- lesbarhet: Syntaksen speiler mรฅten utviklere allerede skriver CSS-regler pรฅ, noe som forkorter lรฆringskurven for bรฅde QA-ingeniรธrer og front-end-team.
- Stabilitet pรฅ tvers av nettlesere: CSS-selektorer oppfรธrer seg konsekvent pรฅ tvers av Chrome, Firefox, Edge og Safari, noe som reduserer ustabile testfeil.
Tagg og ID โ CSS-velger
Dette eksemplet bruker tekstboksen E-post pรฅ Facebook-innloggingssiden. Elementet har en ID pรฅ ยซemaljeยซ, og den ble allerede รฅpnet i delen ยซLokalisering etter IDยป. Nรฅ mรฅlrettes det samme elementet ved hjelp av en Selenium CSS-velger med ID-attributtet.
syntax
css=tag#id
- tag = HTML-koden til elementet som brukes
- # = firkanttegnet, som alltid mรฅ vรฆre tilstede nรฅr man bruker en Selenium CSS-velger med ID
- id = IDen til elementet som brukes
Husk at ID-en alltid innledes med et hash-tegn (#).
Trinn 1) naviger til www.facebook.comBruk nettleserens DevTools (eller et eldre verktรธy som Firebug) til รฅ se pรฅ tekstboksen ยซE-post eller telefonยป.
Legg merke til at HTML-taggen er ยซinngangยซ og ID-en er ยซemaljeยซ. Den komplette CSS-velgeren blir derfor ยซcss=input#e-post".
Trinn 2) Tast inn "css=input#e-post" inn i det Target eske med Selenium IDE og klikk pรฅ Finn-knappen. Selenium IDE fremhever det samsvarende elementet pรฅ siden.
Tagg og klasse โ CSS-velger
En CSS-velger i Selenium som bruker en HTML-tag og et klassenavn fรธlger samme idรฉ som tag og ID, men et punktum (.) erstatter hash-tegnet.
syntax
css=tag.class
- tag = HTML-koden til elementet som brukes
- . = punktumtegnet, som alltid mรฅ vรฆre tilstede nรฅr man bruker en CSS-selektor med klasse
- klasse = klassen til elementet som รฅpnes
Trinn 1) ร pne demosiden https://demo.guru99.com/test/facebook.html og sjekk tekstboksen ยซE-post eller telefonยป. Merk at HTML-taggen er ยซinngang" og klassen er "inndatatekst".
Trinn 2) In Selenium IDE, skriv inn ยซcss=input.inputtekst"I Target boksen og klikk Finn. Selenium IDE gjenkjenner tekstboksen E-post eller Telefon.
Vรฆr oppmerksom pรฅ at nรฅr flere elementer deler samme HTML-tag og klasse, gjenkjennes bare det fรธrste samsvarende elementet i kildekoden. Undersรธk tekstboksen Passord pรฅ samme side, og legg merke til at den deler samme klasse som tekstboksen E-post eller Telefon.
Bare tekstboksen E-post eller Telefon ble uthevet i den forrige illustrasjonen fordi den vises fรธrst i sidekilden.
Tagg og attributt โ CSS-velger
Denne strategien kombinerer en HTML-tag med et spesifikt attributt som tilhรธrer elementet du vil ha tilgang til.
syntax
css=tag[attribute=value]
- tag = HTML-koden til elementet som brukes
- [ og ] = hakeparenteser som omslutter attributtet og den tilhรธrende verdien
- attributt = attributtet som skal brukes. Velg et som er unikt for elementet, for eksempel navn eller id.
- verdi = den tilsvarende verdien til det valgte attributtet.
Trinn 1) Naviger til Mercury Registreringsside for turer https://demo.guru99.com/test/newtours/register.php og sjekk tekstboksen ยซEtternavnยป. Legg merke til HTML-taggen (ยซinputยป) og navneattributtet (ยซlastNameยป).
Trinn 2) In Selenium IDE, skriv inn ยซcss=input[navn=etternavn]"I Target boksen og klikk Finn. Selenium IDE finner feltet Etternavn.
Nรฅr flere elementer deler samme HTML-tag og attributt, gjenkjennes bare det fรธrste. Oppfรธrselen er identisk med รฅ finne elementer med samme tagg og klasse.
Tagg, klasse og attributt โ CSS-velger
syntax
css=tag.class[attribute=value]
- tag = HTML-koden til elementet som brukes
- . = punktumtegnet, som alltid mรฅ vรฆre tilstede nรฅr man bruker en CSS-selektor med klasse
- klasse = klassen til elementet som รฅpnes
- [ og ] = hakeparenteser som omslutter et bestemt attributt og dets tilhรธrende verdi
- attributt = attributtet som skal brukes. Velg et som er unikt for elementet, for eksempel navn eller id.
- verdi = den tilsvarende verdien til det valgte attributtet.
Trinn 1) ร pne demosiden https://demo.guru99.com/test/facebook.html og sjekk inndataboksene ยซE-post eller telefonยป og ยซPassordยป. Legg merke til HTML-koden, klassen og attributtene deres. Dette eksemplet bruker ยซtabindex"attributtet.
Trinn 2) Gรฅ fรธrst til tekstboksen ยซE-post eller telefonยป ved รฅ bruke tabindeksverdien 1. Skriv inn ยซcss=input.inputtext[tabindex=1]โInn i Selenium IDE-er Target boksen og klikk pรฅ Sรธk. Feltet E-post eller Telefon er uthevet.
Trinn 3) For รฅ mรฅlrette Passord-inndataboksen, erstatt ganske enkelt tabindex-verdien. Skriv inn ยซcss=input.inputtext[tabindex=2]"I Target boksen og klikk Finn. Selenium IDE finner tekstboksen Passord.
Indre tekst โ CSS-velger
HTML-etiketter fรฅr sjelden id-, navn- eller klasseattributter. Sรฅ hvordan fรฅr du tilgang til dem i SeleniumSvaret ligger gjennom deres indre tekst. Indre tekster er de faktiske strengmรธnstrene som HTML-etiketten viser pรฅ siden.
syntax
css=tag:contains("inner text")
- tag = HTML-koden til elementet som brukes
- indre tekst = det synlige tekstinnholdet i elementet
Trinn 1) Naviger til Mercury Turens hjemmeside https://demo.guru99.com/test/newtours/ og sjekk etiketten ยซPassordยป. Legg merke til HTML-taggen (ยซfontยป i dette tilfellet) og observer at elementet ikke har noen klasse-, id- eller navneattributter.
Trinn 2) typen css=font:contains(โPassord:โ) inn Selenium IDE-er Target boksen og klikk Finn. Selenium IDE finner passordetiketten som vist nedenfor.
Trinn 3) Denne gangen, erstatt den indre teksten med ยซBostonยป slik at Target blir ยซcss=font:contains(โBostonโ)Klikk pรฅ Finn. Etiketten ยซBoston til San Franciscoยป er uthevet, noe som viser at Selenium IDE kan finne en lang etikett selv om bare det fรธrste ordet i den indre teksten er oppgitt.
CSS-velger kontra XPath i Selenium
Bรฅde CSS-selektorer og XPath brukes til รฅ identifisere webelementer i Selenium, men de har forskjellige styrker. Tabellen nedenfor sammenligner de to lokaliseringsstrategiene basert pรฅ viktige dimensjoner:
| Kriterier | CSS -velger | XPath |
|---|---|---|
| Speed | Raskere, kjรธrer pรฅ nettleserens innebygde motor | Tregere, spesielt i eldre nettlesere |
| Lederskap | Kun videresending (forelder til underordnet) | Fremover og bakover (barn til forelder) |
| syntax | Kortere og lik CSS-regler | Lengre, hierarkiske baneuttrykk |
| Tekstmatching | Begrenset til :contains() pseudoklasse | Sterke tekst()- og inneholder()-funksjoner |
| Best for | Statiske oppsett og moderne webapper | Kompleks DOM-traversering og tekstbaserte lokaliseringsverktรธy |
Beste praksis for รฅ skrive CSS-selektorer i Selenium
ร skrive pรฅlitelige CSS-selektorer gรฅr utover รฅ kjenne syntaksen. Fรธlgende fremgangsmรฅter hjelper testere med รฅ lage stabile, vedlikeholdbare Selenium skript som overlever endringer i brukergrensesnittet:
- Foretrekk unike egenskaper: Velg alltid id-, data-test-id- eller name-attributter som er eksplisitt lagt til for automatisering. Disse forblir stabile selv nรฅr det visuelle oppsettet endres.
- Unngรฅ altfor nestede selektorer: Lange kjeder som f.eks.
div > div > ul > li > agรฅr lett i stykker nรฅr utviklere omstrukturerer markupen. Hold selektorene sรฅ korte som mulig. - Bruk delvise treff klokt: Mรธnstre som
[class*="btn-primary"]tolererer smรฅ endringer i klassenavn, men de kan ogsรฅ matche utilsiktede elementer. - Unngรฅ indeksbaserte lokatorer: Utvelgere som
nth-child(3)er skjรธre fordi det รฅ legge til et sรธskenelement endrer hver posisjon. - Valider selektorer i DevTools: Fรธr du lรธper en Selenium skript, lim inn velgeren i Chrome DevTools-konsollen ved hjelp av
document.querySelector()for รฅ bekrefte at den returnerer nรธyaktig ett element. - Kombiner attributter for unikhet: Nรฅr en klasse deles av mange elementer, legg til et attributtfilter, for eksempel
input.form-control[name="email"]รฅ tydeliggjรธre mรฅlet. - Dokumenter og gjenbruk: Sentraliser selektorer i en Page Object-klasse slik at รฉn enkelt oppdatering fikser hver test som refererer til det samme elementet.
ร fรธlge disse retningslinjene reduserer ujevnhet, forbedrer testutfรธrelseshastigheten og gjรธr Selenium suiter enklere รฅ vedlikeholde over tid.
Sammendrag: Hurtigreferanse for CSS-selektorsyntaks
Tabellen nedenfor konsoliderer alle Selenium CSS-selektormรธnster dekket i denne veiledningen:
| Metode | Target syntax | Eksempel |
|---|---|---|
| Tag og ID | css=tag#id | css=input#e-post |
| Tag og klasse | css=tag.klasse | css=input.inputtekst |
| Tag og attributt | css=tag[attribute=verdi] | css=input[navn=etternavn] |
| Tag, klasse og attributt | css=tag.class[attribute=verdi] | css=input.inputtext[tabindex=1] |
| Indre tekst | css=tag:inneholder(โtekstโ) | css=font:contains(โPassord:โ) |














