CSS-i valija sisse Selenium

โšก Nutikas kokkuvรตte

CSS-i valija sisse Selenium on vรตimas lokaliseerimisstrateegia, mis tuvastab elemente HTML-siltide, ID-de, klasside, atribuutide ja sisemiste tekstimustrite abil. See ressurss selgitab iga CSS-i valija tรผรผpi samm-sammult nรคidetega. Selenium SDI.

  • ๐Ÿ†” Silt ja ID: Kombineeri HTML-mรคrgend eesliitega #, et sihtida tรคpselt elemente, millel on unikaalne ID-atribuut.
  • ๐ŸŽฏ Silt ja klass: Kasutage punkti (.) sรผntaksit CSS-klassi jagavate elementide leidmiseks, mis on kasulik korduvate kasutajaliidese komponentide puhul.
  • ๐Ÿงฉ Silt ja atribuut: Rakenda nurksulge [attribute=value] elementide identifitseerimiseks nime, tรผรผbi vรตi mis tahes kohandatud atribuudipaari jรคrgi.
  • ๐Ÿชœ Silt, klass ja atribuut: Kombineeri mitu tingimust, et eristada elemente, millel on nii klassinimed kui ka atribuudivรครคrtused.
  • ๐Ÿ”ค Sisemise teksti vaste: ID-de, nimede vรตi klassideta siltide ja elementide leidmiseks kasutage mustrit :contains(โ€œtextโ€).
  • โœ… Parim harjutus: Eelista stabiilseid ID-sid sรผgavalt pesastatud selektorite asemel, et sรคilitada Selenium automatiseerimisskriptid on kasutajaliidese muudatuste suhtes vastupidavad.

CSS-i valija sisse Selenium

Mis on CSS-i valija? Selenium?

A CSS-i valija sisse Selenium on stringimuster, mis tuvastab veebielemendi HTML-sildi, ID, klassi ja atribuutide kombinatsiooni abil. CSS-selektorid on veidi keerukamad kui ID vรตi nime jรคrgi otsimine, kuid kogenud kasutajate seas on need kรตige populaarsemad strateegiad. Selenium kasutajad, sest nad pรครคsevad ligi elementidele, millel puudub รผldse ID vรตi Name atribuut.

CSS-i valijad sisse Selenium esinevad mitmel kujul, kuid see juhend keskendub viiele kรตige levinumale mustrile, mida kasutatakse Selenium SDI:

  • Silt ja ID
  • Silt ja klass
  • Silt ja atribuut
  • Silt, klass ja atribuut
  • Sisemine tekst

Selle strateegia kasutamisel Selenium IDE, lisage alati eesliide Target kast sรตnaga โ€žcss="nagu on nรคidatud igas allpool toodud nรคites.

Miks kasutada CSS-i selektoreid Selenium?

CSS-selektorid on paljude jaoks eelistatud lokaliseerimisstrateegia Selenium automatiseerimisinsenerid, sest nad tasakaalustavad kiiruse, paindlikkuse ja loetavuse. Kaasaegsed veebirakendused kasutavad sageli dรผnaamiliselt genereeritud ID-sid vรตi eemaldavad nimeatribuudid tรคielikult, jรคttes CSS-selektorid ainsaks usaldusvรครคrseks viisiks lehe konkreetse elemendi sihtimiseks.

CSS-selektorite kasutamise peamised eelised on jรคrgmised:

  • Performance: CSS-selektoreid tรถรถtleb brauseri enda mootor, seega tรคidavad need kiiremini kui samavรครคrsed XPath-avaldised, eriti vanemates brauserites, nรคiteks Internet Exploreris.
  • Paindlikkus: Need รผhendavad sildi, klassi, atribuudi ja osalise vaste loogika, vรตimaldades testijatel sihtida elemente, millel puudub stabiilne ID.
  • Loetavus: Sรผntaks peegeldab seda, kuidas arendajad juba CSS-i reegleid kirjutavad, mis lรผhendab nii kvaliteedikontrolli inseneride kui ka esiotsa meeskondade รตppimiskรตverat.
  • Brauseriteรผlene stabiilsus: CSS-selektorid kรคituvad Chrome'is รผhtlaselt, Firefox, Edge'i ja Safarit, vรคhendades ebaรผhtlaseid testitรตrkeid.

Silt ja ID โ€“ CSS-i valija

Selles nรคites kasutatakse Facebooki sisselogimislehel tekstikasti โ€žEmailโ€. Elemendi ID on โ€že-mailโ€žja sellele oli juba juurdepรครคs jaotises โ€žAsukoha mรครคramine ID jรคrgiโ€œ. Nรผรผd on sama element suunatud a abil Selenium CSS-valija ID atribuudiga.

Sรผntaks

css=tag#id

  • tag = juurdepรครคsetava elemendi HTML-mรคrgend
  • # = rรคsimรคrk, mis peab alati olema, kui kasutate Selenium CSS-i valija ID-ga
  • id = juurdepรครคsetava elemendi ID

Pidage meeles, et ID-le eelneb alati rรคsimรคrk (#).

Step 1) Liigu www.facebook.com. Kontrollige oma brauseri DevToolsi (vรตi mรตne vanema tรถรถriista, nรคiteks Firebugi) abil tekstikasti โ€žE-post vรตi telefonโ€.

Pane tรคhele, et HTML-mรคrgend on โ€žsisend" ja selle ID on "e-mailโ€ž. Tรคielik CSS-i valija saab seega โ€žcss=sisend#e-post".

Silt ja ID - CSS-i valija Selenium

Step 2) Sisenema "css=sisend#e-post" sisse Target kast Selenium IDE ja klรตpsake nuppu Otsi. Selenium IDE tรตstab lehel esile sobiva elemendi.

Selenium IDE esiletรตstmine e-posti vรคljal sildi ja ID kaudu

Silt ja klass โ€“ CSS-i valija

CSS-valija Selenium mis kasutab HTML-silti ja klassi nime, jรคrgib sama ideed mis silt ja ID, aga rรคsi asendab punkt (.).

Sรผntaks

css=tag.class

  • tag = juurdepรครคsetava elemendi HTML-mรคrgend
  • . = punktimรคrk, mis peab alati olema olemas CSS-i valija kasutamisel klassiga
  • klass = juurdepรครคsetava elemendi klass

Step 1) Ava demoleht https://demo.guru99.com/test/facebook.html ja kontrollige tekstikasti โ€žE-post vรตi telefonโ€. Pange tรคhele, et HTML-mรคrgend on โ€žsisend" ja selle klass on "sisestatud tekst".

Silt ja klass - CSS-i valija Selenium

Step 2) In Selenium IDE-sse sisestage โ€žcss=input.inputtext"Kohta Target kasti ja klรตpsake nuppu Otsi. Selenium IDE tunneb รคra tekstikasti E-post vรตi Telefon.

Selenium IDE elemendi asukoha mรครคramine sildi ja klassi jรคrgi

Pane tรคhele, et kui mitu elementi jagavad sama HTML-silti ja klassi, tuvastatakse ainult esimene sobiv element lรคhtekoodis. Kontrollige samal lehel olevat tekstikasti โ€žParoolโ€ ja pange tรคhele, et see jagab sama klassi tekstikastiga โ€žE-postโ€ vรตi โ€žTelefonโ€.

Mitu elementi, millel on sama silt ja klass

Eelmisel illustratsioonil oli esile tรตstetud ainult tekstivรคli โ€žE-postโ€ vรตi โ€žTelefonโ€, kuna see kuvatakse lehe lรคhtekoodis esimesena.

Lehe allika jรคrjekorra mรครคramine Selenium vastama

Silt ja atribuut โ€“ CSS-i valija

See strateegia รผhendab HTML-sildi kindla atribuudiga, mis kuulub elemendile, millele soovite juurde pรครคseda.

Sรผntaks

css=tag[attribute=value]

  • tag = juurdepรครคsetava elemendi HTML-mรคrgend
  • [ ja ] = nurksulud, mis รผmbritsevad atribuuti ja selle vastavat vรครคrtust
  • attribute = kasutatav atribuut. Valige elemendi jaoks unikaalne atribuut, nรคiteks nimi vรตi ID.
  • vรครคrtus = valitud atribuudi vastav vรครคrtus.

Step 1) Liikuge Mercury Ekskursioonide registreerimisleht https://demo.guru99.com/test/newtours/register.php ja kontrollige tekstikasti โ€žPerekonnanimiโ€œ. Pange tรคhele selle HTML-silti (โ€žinputโ€œ) ja nime atribuuti (โ€žlastNameโ€œ).

Silt ja atribuut - CSS-i valija Selenium

Step 2) In Selenium IDE-sse sisestage โ€žcss=sisend[nimi=perenimi]"Kohta Target kasti ja klรตpsake nuppu Otsi. Selenium IDE leiab edukalt perekonnanime vรคlja.

Selenium IDE leiab perekonnanime atribuudi abil

Kui mitu elementi jagavad sama HTML-silti ja atribuuti, tuvastatakse ainult esimene. Kรคitumine on identne sama sildi ja klassiga elementide leidmisega.

Silt, klass ja atribuut โ€“ CSS-i valija

Sรผntaks

css=tag.class[attribute=value]

  • tag = juurdepรครคsetava elemendi HTML-mรคrgend
  • . = punktimรคrk, mis peab alati olema olemas CSS-i valija kasutamisel klassiga
  • klass = juurdepรครคsetava elemendi klass
  • [ ja ] = nurksulud, mis รผmbritsevad konkreetset atribuuti ja selle vastavat vรครคrtust
  • attribute = kasutatav atribuut. Valige elemendi jaoks unikaalne atribuut, nรคiteks nimi vรตi ID.
  • vรครคrtus = valitud atribuudi vastav vรครคrtus.

Step 1) Ava demoleht https://demo.guru99.com/test/facebook.html ja kontrollige sisestuskaste โ€žE-post vรตi telefonโ€œ ja โ€žParoolโ€œ. Pange tรคhele nende HTML-mรคrgendit, klassi ja atribuute. Selles nรคites kasutatakse โ€žtabindex"atribuut".

Silt, klass ja atribuut โ€“ CSS Selector

Step 2) Ava esmalt tekstivรคli โ€žE-post vรตi telefonโ€, kasutades tabindexi vรครคrtust 1. Sisesta โ€žcss=input.inputtext[tabindex=1]โ€Sisse Selenium IDE-d Target ja klรตpsake nuppu โ€žOtsiโ€œ. E-posti vรตi telefoni vรคli on esile tรตstetud.

Selenium IDE leiab e-posti sildi, klassi vรตi atribuudi jรคrgi

Step 3) Parooli sisestamise vรคljale sihtimiseks asenda lihtsalt tabindexi vรครคrtus. Sisestage โ€žcss=input.inputtext[tabindex=2]"Kohta Target kasti ja klรตpsake nuppu Otsi. Selenium IDE leiab edukalt parooli tekstikasti.

Selenium IDE leiab parooli sildi, klassi vรตi atribuudi jรคrgi

Sisemine tekst โ€“ CSS-i valija

HTML-i siltidele antakse harva atribuute id, name vรตi class. Kuidas neile siis ligi pรครคseda? SeleniumVastus peitub nende sisemises tekstis. Sisemised tekstid on tegelikud stringimustrid, mida HTML-i silt lehel kuvab.

Sรผntaks

css=tag:contains("inner text")

  • tag = juurdepรครคsetava elemendi HTML-mรคrgend
  • sisemine tekst = elemendi nรคhtav tekstisisu

Step 1) Liikuge Mercury Ekskursioonide koduleht https://demo.guru99.com/test/newtours/ ja kontrollige silti โ€žPasswordโ€œ (parool). Pange tรคhele selle HTML-silti (antud juhul โ€žfontโ€œ) ja veenduge, et elemendil puuduvad atribuudid class (klass), id (id) vรตi name (nimi).

Sisemine tekst - CSS-i valija kontroll

Step 2) KASUTUSALA css=font:contains("Parool:") sisse Selenium IDE-d Target kasti ja klรตpsake nuppu Otsi. Selenium IDE leiab paroolisildi, nagu allpool nรคidatud.

Selenium IDE leiab paroolisildi sisemise teksti jรคrgi

Step 3) Seekord asenda sisemine tekst sรตnaga โ€žBostonโ€œ, nii et Target saab "css=font:sisaldab("Boston")โ€ž. Klรตpsake nuppu โ€žOtsiโ€. Silt โ€žBostonist San Franciscosseโ€ on esile tรตstetud, mis nรคitab, et Selenium IDE suudab leida pika sildi isegi siis, kui selle sisemisest tekstist on esitatud ainult esimene sรตna.

Selenium IDE osaline sisemise teksti vaste

CSS-i valija vs XPath Selenium

Veebielementide tuvastamiseks kasutatakse nii CSS-i selektoreid kui ka XPathi. Selenium, kuid neil on erinevad tugevused. Allolev tabel vรตrdleb kahte lokaliseerimisstrateegiat pรตhimรตรตtmetes:

Kriteeriumid CSS-i valija XPath
Kiirus Kiirem, tรถรถtab brauseri oma mootoril Aeglasem, eriti vanemates brauserites
Eestvedamine Ainult edasi (vanemast lapsele) Edasi ja tagasi (lapsest vanemale)
Sรผntaks Lรผhem ja sarnane CSS-i reeglitega Pikemad, hierarhilised teeavaldised
Teksti sobitamine Piiratud pseudoklassiga :contains() Tugevad text() ja contains() funktsioonid
Parim on Staatilised paigutused ja kaasaegsed veebirakendused Kompleksne DOM-i lรคbimine ja tekstipรตhised lokaatorid

CSS-selektorite kirjutamise parimad tavad Selenium

Usaldusvรครคrsete CSS-selektorite kirjutamine hรตlmab enamat kui lihtsalt sรผntaksi tundmist. Jรคrgmised tavad aitavad testijatel luua stabiilseid ja hooldatavaid Selenium skriptid, mis jรครคvad kasutajaliidese muudatustesse alles:

  1. Eelista unikaalseid omadusi: Vali alati atribuudid id, data-test-id vรตi name, mis on automatiseerimiseks selgesรตnaliselt lisatud. Need jรครคvad stabiilseks isegi siis, kui visuaalne paigutus muutub.
  2. Vรคldi liiga pesastatud selektoreid: Pikad ketid, nรคiteks div > div > ul > li > a katki minna, kui arendajad mรคrgistust รผmber faktoriseerivad. Hoia selektorid vรตimalikult lรผhikesed.
  3. Kasutage osalisi vasteid targalt: Mustrid nagu [class*="btn-primary"] taluvad vรคikeseid klassinime muudatusi, kuid need vรตivad sobida ka soovimatute elementidega.
  4. Vรคltige indeksipรตhiseid lokaatoreid: Valijad nagu nth-child(3) on habras, sest รตe- ja vennaelemendi lisamine nihutab iga positsiooni.
  5. Valijate valideerimine DevToolsis: Enne jooksmist a Selenium skripti jaoks kleepige valija Chrome DevToolsi konsooli, kasutades document.querySelector() et kinnitada, et see tagastab tรคpselt รผhe elemendi.
  6. Atribuutide kombineerimine unikaalsuse saavutamiseks: Kui klassi jagavad paljud elemendid, lisage atribuudifilter, nรคiteks input.form-control[name="email"] sihtmรคrgi รผheselt mรตistetavaks tegemiseks.
  7. Dokumenteerimine ja taaskasutamine: Tsentraliseeri selektorid Page Object klassi sees nii, et รผks uuendus parandaks iga testi, mis viitab samale elemendile.

Nende juhiste jรคrgimine vรคhendab ebastabiilsust, parandab testide sooritamise kiirust ja muudab Selenium sviite on aja jooksul lihtsam hooldada.

Kokkuvรตte: CSS-i valija sรผntaksi kiirjuhend

Allolev tabel koondab kรตik Selenium Selles juhendis kรคsitletud CSS-i valiku muster:

Meetod Target Sรผntaks Nรคide
Silt ja ID css=tag#id css=sisend#e-post
Silt ja klass css=tag.klass css=input.inputtext
Silt ja atribuut css=silt[atribuut=vรครคrtus] css=sisend[nimi=perenimi]
Silt, klass ja atribuut css=tag.class[attribute=value] css=input.inputtext[tabindex=1]
Sisemine tekst css=tag:sisaldab(โ€œtekstโ€) css=font:contains("Parool:")

KKK

Jah. CSS-selektorid tรถรถtavad รผldiselt kiiremini kui XPath, kuna brauserid tรถรถtlevad CSS-reegleid natiivselt. Erinevus on kรตige mรคrgatavam Internet Exploreri vanemates versioonides, samas kui tรคnapรคevased brauserid, nagu Chrome ja Firefox lรตhet vรคhendada.

Jah. CSS-selektorid on kirjutatud ... jaoks Selenium IDE tรถรถtab otse Selenium WebDriver lรคbi By.cssSelector()Ainus erinevus on see, et WebDriver ei vaja eesliidet โ€žcss=โ€, kuna lokaatori tรผรผbi mรครคrab meetod ise.

Ei. Firebugi tootmine lรตpetati 2017. aastal pรคrast selle รผhendamist ettevรตttega Firefox Arendaja tรถรถriistad. Tรคnapรคeval kasutavad testijad Chrome'i sisseehitatud DevToolsi, Firefoxvรตi Edge'i abil elementide kontrollimiseks ja CSS-selektorite valideerimiseks enne nende lisamist Selenium skripte.

Jah. Tehisintellektil pรตhinevad tรถรถriistad, nรคiteks Testim, Mabl ja ChatGPT saavad DOM-i analรผรผsides soovitada CSS-selektoreid. Need vรคhendavad hooldustรถรถd, kohandades selektoreid, kui arendajad klasse รผmber nimetavad vรตi lehte รผmber struktureerivad.

Tehisintellektil pรตhinevad isetervendavad mootorid analรผรผsivad รผmbritsevat DOM-i ja taastuvad automaatselt vigastest lokaatoritest. Kui CSS-selektor ebaรตnnestub, tuvastab mootor atribuutide sarnasuse, tekstisisu ja ajalooliste mustrite abil lรคhima sobiva elemendi, taastades testi stabiilsuse.

Kasutage osalise vaste mustreid, nรคiteks [id^="user_"] eesliidete puhul [id$="_btn"] jรคrelliidete puhul vรตi [id*="cart"] alamstringide jaoks. Need mustrid vastavad dรผnaamiliselt genereeritud ID-dele ilma tรคpse vรครคrtuseta.

CSS-i selektorid ei saa liikuda รผlespoole lapseelemendist selle รผlemelemendini ja pakuvad piiratud teksti sobitamise tuge. Selliste stsenaariumide korral on XPath endiselt parem valik. CSS-is puuduvad ka sisseehitatud funktsioonid sugulusloogika jaoks peale kรผlgnevate ja รผldiste sugulus-รตdede-vendade.

Ava brauseri DevTools, lรผlita vahekaardile Console ja kรคivita see. document.querySelectorAll("your-selector")Tagastatud NodeList nรคitab kรตiki sobivaid elemente. Usaldusvรครคrne Selenium unikaalse sihtimise korral peaks lokaator tagastama tรคpselt รผhe elemendi.

Vรตta see postitus kokku jรคrgmiselt: