Selenium CSS Selectors Dæmi

Að finna þætti eftir CSS völdum er ákjósanlegasta leiðin þar sem það er fljótlegra og læsilegra en XPath.

Þessi kennsla gefur dæmi um hvernig staðsetja má vefþætti í Selen með CSS völdum.



CSS veljendur eftir eiginleika

Við skulum ímynda okkur að við séum með merki með eftirfarandi eiginleika [auðkenni, flokkur, nafn, gildi]


Almenn leið til að finna þætti eftir eiginleikum er:

css = element_name[='']

Dæmi:


WebElement firstName = driver.findElement(By.cssSelector('input[name='first_name']'));

Id eiginleiki

Í CSS getum við notað # tákn til að velja id eiginleiki frumefnis:

Dæmi:

driver.findElement(By.cssSelector('input#firstname')); //or driver.findElement(By.cssSelector('#firstname'));

Class Eiginleiki

Sama meginregla er hægt að nota til að staðsetja þætti eftir class eiginleiki.

Við notum . nótnaskrift.


driver.findElement(By.cssSelector('input.myForm')); //or driver.findElement(By.cssSelector('.myForm')); Athugið:Gæta skal sérstakrar varúðar þegar þú notar . táknun þar sem það gætu verið margir vefþættir á HTML uppruna með sama flokk eiginleika.

Margir eiginleikar

Stundum þarf að vera nákvæmari með valforsendur til að finna réttan þátt.

Gildi skjásins gæti annað hvort verið „ekkert“ eða „lokað“ eftir ajax símtalinu. Í þessum aðstæðum verðum við að finna frumefnið bæði eftir stétt og stíl.

Dæmi:

driver.findElement(By.cssSelector('div[class='ajax_enabled'] [style='display:block']'));

Eiginleiki inniheldur EKKI sérstakt gildi

Hvernig finnurðu í WebDriver þætti sem hafa eiginleika sem innihalda gildi sem þú vilt ekki velja? Þetta CSS valdæmi sýnir hvernig EKKI á að velja eftir sérstöku eigindagildi


Segjum sem svo að þú hafir marga þætti sem deila sama eiginleiki og eiginleiksgildi, en sumir af þessum þáttum hafa aðrar breytur sem fylgir gildinu. td:

Í ofangreindu broti viljum við velja dag sem er í boði (þ.e. tveir síðustu div þættirnir)

Eins og sjá má innihalda allar fjórar deildir „dagatal“ - en fyrstu tvær innihalda einnig „ófáanlegt“ sem við viljum ekki.

CSS valinn fyrir að velja ekki fyrstu tvo deildina er


driver.findElement(By.cssSelector('div[class*=calendar-day-]:not([class*='unavailable'])'));'

Að finna þátt barna

Til að finna myndamerkið notum við:

driver.findElement(By.cssSelector('div#logo img'));

Margfeldi barnaþættir

Það eru tilefni þegar það eru mörg barnaefni innan sama foreldraþáttar svo sem listaþættir


  • Apple

  • Orange

  • Banana

Eins og sjá má hafa einstakir listareiningar ekki neitt auðkenni sem tengjast þeim. Til að finna frumefnið með textanum ‘Orange’ verðum við að nota nth-of-type.

Dæmi:


driver.findElement(By.cssSelector('ul#fruit li:nth-of-type(2)'));

Sömuleiðis notum við: til að velja síðasta þáttinn í barninu, þ.e.a.s.

driver.findElement(By.cssSelector('ul#fruit li:last-child'));

Dynamically myndað auðkenni

Við getum notað strengjamótara til að finna þætti með virkum auðkennum.

Í þessu dæmi innihalda allir þrír div-þættirnir orðið „random“.

Eiginleiki Byrjar með

Til að velja fyrsta div frumefni, við myndum nota ^= sem þýðir „byrjar með“:

driver.findElement(By.cssSelector('div[id^='123']'));

Eiginleiki lýkur með

Til að velja annað div frumefni, við myndum nota $= sem þýðir „endar með“:

driver.findElement(By.cssSelector('div[id$='456']'));

Eiginleiki Inniheldur

Til að velja síðasta div frumefni sem við myndum nota *= sem þýðir „undirstrengur“

driver.findElement(By.cssSelector('div[id*='_pattern_']'));

Við getum líka notað contains

driver.findElement(By.cssSelector('div:contains('_pattern_')'));

Frekari lestur: