CSS Selector in Selenium
โก Chytrรฉ shrnutรญ
CSS Selector in Selenium je vรฝkonnรก strategie lokace, kterรก identifikuje prvky pomocรญ HTML tagลฏ, ID, tลรญd, atributลฏ a vzorลฏ vnitลnรญho textu. Tento zdroj vysvฤtluje kaลพdรฝ typ CSS selektoru s podrobnรฝmi pลรญklady. Selenium SDI.

Co je CSS selektor v Selenium?
A CSS Selector in Selenium je ลetฤzcovรฝ vzor, โโkterรฝ identifikuje webovรฝ prvek pomocรญ kombinace HTML tagu, ID, tลรญdy a atributลฏ. CSS selektory jsou o nฤco pokroฤilejลกรญ neลพ vyhledรกvรกnรญ podle ID nebo nรกzvu, ale jsou nejoblรญbenฤjลกรญ strategiรญ mezi zkuลกenรฝmi uลพivateli. Selenium uลพivatelรฉ, protoลพe mohou dosรกhnout prvkลฏ, kterรฉ nemajรญ vลฏbec ลพรกdnรฝ atribut ID nebo Name.
Selektory CSS v Selenium se vyskytujรญ v mnoha podobรกch, ale tato pลรญruฤka se zamฤลuje na pฤt nejbฤลพnฤjลกรญch vzorลฏ pouลพรญvanรฝch v Selenium SDI:
- Tag a ID
- Znaฤka a tลรญda
- Znaฤka a atribut
- Znaฤka, tลรญda a atribut
- Vnitลnรญ text
Pลi pouลพitรญ tรฉto strategie v Selenium IDE, vลพdy pลedponou Target krabice s โcss=โjak je ukรกzรกno v kaลพdรฉm nรญลพe uvedenรฉm pลรญkladu.โ
Proฤ pouลพรญvat CSS selektory v Selenium?
Selektory CSS jsou preferovanou strategiรญ pro vyhledรกvรกnรญ pro mnoho Selenium automatizaฤnรญ inลพenรฝลi, protoลพe vyvaลพujรญ rychlost, flexibilitu a ฤitelnost. Modernรญ webovรฉ aplikace ฤasto pouลพรญvajรญ dynamicky generovanรก ID nebo zcela odstraลujรญ atributy nรกzvu, takลพe selektory CSS jsou jedinรฝm spolehlivรฝm zpลฏsobem, jak cรญlit na konkrรฉtnรญ prvek na strรกnce.
Mezi hlavnรญ vรฝhody pouลพรญvรกnรญ CSS selektorลฏ patลรญ:
- Vรฝkon: Selektory CSS jsou zpracovรกvรกny nativnรญm enginem prohlรญลพeฤe, takลพe se provรกdฤjรญ rychleji neลพ ekvivalentnรญ vรฝrazy XPath, zejmรฉna ve starลกรญch prohlรญลพeฤรญch, jako je Internet Explorer.
- Flexibilita: Kombinujรญ logiku tagลฏ, tลรญd, atributลฏ a ฤรกsteฤnรฝch shod, coลพ testerลฏm umoลพลuje cรญlit na prvky, kterรฉ nemajรญ stabilnรญ ID.
- ฤitelnost: Syntaxe odrรกลพรญ zpลฏsob, jakรฝm vรฝvojรกลi jiลพ pรญลกรญ pravidla CSS, coลพ zkracuje dobu uฤenรญ jak pro QA inลพenรฝry, tak pro front-end tรฝmy.
- Stabilita napลรญฤ prohlรญลพeฤi: Selektory CSS se chovajรญ v celรฉm Chromu konzistentnฤ, Firefox, Edge a Safari, coลพ sniลพuje poฤet selhรกnรญ nestabilnรญch testลฏ.
Tag a ID โ CSS selektor
Tento pลรญklad pouลพรญvรก textovรฉ pole E-mail na pลihlaลกovacรญ strรกnce Facebooku. Prvek mรก ID โe-mailโa k nฤmu se jiลพ pลistupovalo v sekci โVyhledรกvรกnรญ podle IDโ. Nynรญ je stejnรฝ prvek cรญlen pomocรญ Selenium Selektor CSS s atributem ID.
Syntax
css=tag#id
- tag = HTML tag prvku, ke kterรฉmu se pลistupuje
- # = znak kลรญลพku, kterรฝ musรญ bรฝt vลพdy pลรญtomen pลi pouลพitรญ Selenium CSS Selector s ID
- id = ID prvku, ke kterรฉmu se pลistupuje
Mฤjte na pamฤti, ลพe pลed ID vลพdy pลedchรกzรญ znak hash (#).
Krok 1) pลejdฤte na www.facebook.comPomocรญ nรกstrojลฏ DevTools ve vaลกem prohlรญลพeฤi (nebo starลกรญho nรกstroje, jako je Firebug) zkontrolujte textovรฉ pole โE-mail nebo telefonโ.
Vลกimnฤte si, ลพe HTML tag je โvstupโa jeho ID je โe-mailโ. Kompletnรญ CSS selektor se tedy stรกvรก โcss=vstup#email".
Krok 2) Zadejte โcss=vstup#email" do Target krabiฤka Selenium IDE a kliknฤte na tlaฤรญtko Najรญt. Selenium IDE zvรฝraznรญ odpovรญdajรญcรญ prvek na strรกnce.
Tag a tลรญda โ CSS selektor
Selektor CSS v Selenium kterรฝ pouลพรญvรก HTML tag a nรกzev tลรญdy, se ลรญdรญ stejnou myลกlenkou jako tag a ID, ale znak kลรญลพku nahrazuje teฤka (.).
Syntax
css=tag.class
- tag = HTML tag prvku, ke kterรฉmu se pลistupuje
- . = teฤka, kterรก musรญ bรฝt vลพdy pลรญtomna pลi pouลพitรญ CSS selektoru s tลรญdou
- class = tลรญda prvku, ke kterรฉmu se pลistupuje
Krok 1) Otevลรญt demo strรกnku https://demo.guru99.com/test/facebook.html a zkontrolujte textovรฉ pole โE-mail nebo telefonโ. Vลกimnฤte si, ลพe HTML tag je โvstupโa jeho tลรญda je โvstupnรญ text".
Krok 2) In Selenium IDE, zadejte โcss=input.inputtext"V Target a kliknฤte na Najรญt. Selenium IDE rozpoznรก textovรฉ pole E-mail nebo Telefon.
Vezmฤte prosรญm na vฤdomรญ, ลพe pokud vรญce prvkลฏ sdรญlรญ stejnou HTML znaฤku a tลรญdu, je rozpoznรกn pouze prvnรญ odpovรญdajรญcรญ prvek ve zdrojovรฉm kรณdu. Prohlรฉdnฤte si textovรฉ pole Heslo na stejnรฉ strรกnce a vลกimnฤte si, ลพe sdรญlรญ stejnou tลรญdu jako textovรฉ pole E-mail nebo Telefon.
Na pลedchozรญm obrรกzku bylo zvรฝraznฤno pouze textovรฉ pole E-mail nebo Telefon, protoลพe se ve zdrojovรฉm kรณdu strรกnky zobrazuje jako prvnรญ.
Tag a atribut โ CSS selektor
Tato strategie kombinuje HTML tag se specifickรฝm atributem patลรญcรญm k prvku, ke kterรฉmu chcete pลistupovat.
Syntax
css=tag[attribute=value]
- tag = HTML tag prvku, ke kterรฉmu se pลistupuje
- [ a ] โโ= hranatรฉ zรกvorky, kterรฉ obalujรญ atribut a jeho odpovรญdajรญcรญ hodnotu
- attribute = atribut, kterรฝ se mรก pouลพรญt. Vyberte takovรฝ, kterรฝ je pro danรฝ element jedineฤnรฝ, napลรญklad name nebo id.
- hodnota = odpovรญdajรญcรญ hodnota zvolenรฉho atributu.
Krok 1) Pลejdฤte na Mercury Strรกnka s registracรญ na prohlรญdky https://demo.guru99.com/test/newtours/register.php a prohlรฉdnฤte si textovรฉ pole โPลรญjmenรญโ. Vลกimnฤte si jeho HTML tagu (โinputโ) a atributu name (โlastNameโ).
Krok 2) In Selenium IDE, zadejte โcss=input[name=lastName]"V Target a kliknฤte na Najรญt. Selenium IDE รบspฤลกnฤ vyhledรก pole Pลรญjmenรญ.
Pokud vรญce prvkลฏ sdรญlรญ stejnรฝ HTML tag a atribut, je rozpoznรกn pouze prvnรญ z nich. Chovรกnรญ je identickรฉ s vyhledรกvรกnรญm prvkลฏ se stejnou znaฤkou a tลรญdou.
Tag, tลรญda a atribut โ CSS selektor
Syntax
css=tag.class[attribute=value]
- tag = HTML tag prvku, ke kterรฉmu se pลistupuje
- . = teฤka, kterรก musรญ bรฝt vลพdy pลรญtomna pลi pouลพitรญ CSS selektoru s tลรญdou
- class = tลรญda prvku, ke kterรฉmu se pลistupuje
- [ a ] โโ= hranatรฉ zรกvorky, kterรฉ obalujรญ konkrรฉtnรญ atribut a jeho odpovรญdajรญcรญ hodnotu
- attribute = atribut, kterรฝ se mรก pouลพรญt. Vyberte takovรฝ, kterรฝ je pro danรฝ element jedineฤnรฝ, napลรญklad name nebo id.
- hodnota = odpovรญdajรญcรญ hodnota zvolenรฉho atributu.
Krok 1) Otevลรญt demo strรกnku https://demo.guru99.com/test/facebook.html a zkontrolujte vstupnรญ pole โE-mail nebo telefonโ a โHesloโ. Vลกimnฤte si jejich HTML tagu, tลรญdy a atributลฏ. Tento pลรญklad pouลพรญvรก โtabindexatribut โโ.
Krok 2) Nejprve otevลete textovรฉ pole โE-mail nebo telefonโ s hodnotou tabindex 1. Zadejte โcss=input.inputtext[tabindex=1]โDo Selenium IDE Target a kliknฤte na Najรญt. Pole E-mail nebo Telefon se zvรฝraznรญ.
Krok 3) Chcete-li cรญlit na pole pro zadรกnรญ hesla, jednoduลกe nahraฤte hodnotu tabindex. Zadejte โcss=input.inputtext[tabindex=2]"V Target a kliknฤte na Najรญt. Selenium IDE รบspฤลกnฤ vyhledรก textovรฉ pole Heslo.
Vnitลnรญ text โ CSS selektor
HTML ลกtรญtky zลรญdka dostรกvajรญ atributy id, name nebo class. Jak k nim tedy pลistupujete v SeleniumOdpovฤฤ spoฤรญvรก v jejich vnitลnรญm textu. Vnitลnรญ texty jsou skuteฤnรฉ ลetฤzcovรฉ vzory, kterรฉ HTML popisek zobrazuje na strรกnce.
Syntax
css=tag:contains("inner text")
- tag = HTML tag prvku, ke kterรฉmu se pลistupuje
- vnitลnรญ text = viditelnรฝ textovรฝ obsah elementu
Krok 1) Pลejdฤte na Mercury Domovskรก strรกnka prohlรญdek https://demo.guru99.com/test/newtours/ a prohlรฉdnฤte si ลกtรญtek โHesloโ. Vลกimnฤte si jeho HTML tagu (โv tomto pลรญpadฤ fontโ) a vลกimnฤte si, ลพe element nemรก ลพรกdnรฉ atributy class, id ani name.
Krok 2) Typ css=font:contains(โHeslo:โ) do Selenium IDE Target a kliknฤte na Najรญt. Selenium IDE vyhledรก popisek hesla, jak je znรกzornฤno nรญลพe.
Krok 3) Tentokrรกt nahraฤte vnitลnรญ text slovem โBostonโ, aby Target stรกvรก se โcss=font:contains(โBostonโ)โ. Kliknฤte na Najรญt. ล tรญtek โBoston do San Franciscaโ je zvรฝraznฤn, coลพ ukazuje, ลพe Selenium IDE dokรกลพe najรญt dlouhรฝ popisek, i kdyลพ je zadรกno pouze prvnรญ slovo jeho vnitลnรญho textu.
CSS selektor vs. XPath v Selenium
Selektory CSS i XPath se pouลพรญvajรญ k identifikaci webovรฝch prvkลฏ v Selenium, pลesto majรญ rลฏznรฉ silnรฉ strรกnky. Nรญลพe uvedenรก tabulka porovnรกvรก obฤ strategie lokalizace v klรญฤovรฝch dimenzรญch:
| Kritรฉria | Selektor CSS | XPath |
|---|---|---|
| Rychlost | Rychlejลกรญ, bฤลพรญ na nativnรญm enginu prohlรญลพeฤe | Pomalejลกรญ, zejmรฉna ve starลกรญch prohlรญลพeฤรญch |
| Vedenรญ | Pouze pลeposรญlรกnรญ (od nadลazenรฉho k podลรญzenรฉmu) | Vpลed a vzad (od dรญtฤte k rodiฤi) |
| Syntax | Kratลกรญ a podobnรก pravidlลฏm CSS | Delลกรญ, hierarchickรฉ vรฝrazy cest |
| Shoda textu | Omezeno na pseudotลรญdu :contains() | Silnรฉ funkce text() a contains() |
| Nejlepลกรญ pro | Statickรฉ rozvrลพenรญ a modernรญ webovรฉ aplikace | Komplexnรญ prochรกzenรญ DOM a textovรฉ lokรกtory |
Nejlepลกรญ postupy pro psanรญ CSS selektorลฏ v Selenium
Psanรญ spolehlivรฝch CSS selektorลฏ jde nad rรกmec znalosti syntaxe. Nรกsledujรญcรญ postupy pomรกhajรญ testerลฏm vytvรกลet stabilnรญ a snadno udrลพovatelnรฉ Selenium skripty, kterรฉ pลeลพijรญ zmฤny uลพivatelskรฉho rozhranรญ:
- Preferujte jedineฤnรฉ atributy: Vลพdy vyberte atributy id, data-test-id nebo name, kterรฉ jsou explicitnฤ pลidรกny pro automatizaci. Tyto atributy zลฏstรกvajรญ stabilnรญ i pลi zmฤnฤ vizuรกlnรญho rozvrลพenรญ.
- Vyhnฤte se pลรญliลก vnoลenรฝm selektorลฏm: Dlouhรฉ ลetฤzce, jako napล.
div > div > ul > li > asnadno se zlomรญ, kdyลพ vรฝvojรกลi refaktorujรญ znaฤkovรกnรญ. Udrลพujte selektory co nejkratลกรญ. - Pouลพรญvejte ฤรกsteฤnรฉ shody moudลe: Vzory jako napลรญklad
[class*="btn-primary"]tolerujรญ malรฉ zmฤny nรกzvลฏ tลรญd, ale mohou takรฉ odpovรญdat nezamรฝลกlenรฝm prvkลฏm. - Vyhnฤte se lokรกtorลฏm zaloลพenรฝm na indexech: Selektori jako
nth-child(3)jsou kลehkรฉ, protoลพe pลidรกnรญ sourozeneckรฉho prvku posune kaลพdou pozici. - Ovฤลenรญ selektorลฏ v DevTools: Pลed spuลกtฤnรญm a Selenium skript, vloลพte selektor do konzole Chrome DevTools pomocรญ
document.querySelector()pro potvrzenรญ, ลพe vracรญ pลesnฤ jeden prvek. - Kombinujte atributy pro jedineฤnost: Pokud je tลรญda sdรญlena mnoha prvky, pลidejte filtr atributลฏ, napลรญklad
input.form-control[name="email"]aby se cรญl jednoznaฤnฤ vyjasnil. - Dokumentace a opฤtovnรฉ pouลพitรญ: Centralizujte selektory uvnitล tลรญdy Page Object tak, aby jedna aktualizace opravila kaลพdรฝ test, kterรฝ odkazuje na stejnรฝ prvek.
Dodrลพovรกnรญ tฤchto pokynลฏ sniลพuje nestรกlost, zvyลกuje rychlost provรกdฤnรญ testลฏ a usnadลuje... Selenium apartmรกny se ฤasem snadnฤji udrลพujรญ.
Shrnutรญ: Struฤnรฝ pลehled syntaxe selektorลฏ CSS
Nรญลพe uvedenรก tabulka shrnuje vลกechny Selenium Vzor selektoru CSS popsanรฝ v tรฉto pลรญruฤce:
| Metoda | Target Syntax | Pลรญklad |
|---|---|---|
| Tag a ID | css=tag#id | css=vstup#email |
| Znaฤka a tลรญda | css=tag.class | css=input.inputtext |
| Znaฤka a atribut | css=tag[attribute=value] | css=input[name=lastName] |
| Znaฤka, tลรญda a atribut | css=tag.class[attribute=value] | css=input.inputtext[tabindex=1] |
| Vnitลnรญ text | css=tag:obsahuje(โtextโ) | css=font:contains(โHeslo:โ) |














