Tuladha Pamilih CSS Selenium

Nemokake elemen dening pamilih CSS minangka cara sing disenengi amarga luwih cepet lan luwih bisa diwaca tinimbang XPath.

Tutorial iki menehi conto cara nemokake elemen web ing Selenium nggunakake pamilih CSS.



Pamilih CSS miturut Atribut

Coba bayangake kita duwe tag kanthi atribut ing ngisor iki [id, kelas, jeneng, nilai]


Cara umum kanggo nemokake elemen miturut atribut yaiku:

css = element_name[='']

Tuladha:


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

Atribut Id

Ing CSS, kita bisa nggunakake # notasi kanggo milih id atribut unsur:



Tuladha:

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

Atribut Kelas

Prinsip sing padha bisa digunakake kanggo nemokake elemen kanthi class atribut

Kita nggunakake . notasi


driver.findElement(By.cssSelector('input.myForm')); //or driver.findElement(By.cssSelector('.myForm')); Cathetan:Ati-ati banget nalika nggunakake . notasi amarga bisa ana akeh elemen web ing sumber HTML kanthi atribut kelas sing padha.

Multiple Atribut

Kadhangkala perlu luwih spesifik karo kritéria pamilihan supaya bisa nemokake elemen sing bener.

Nilai tampilan bisa uga 'ora ana' utawa 'blok' gumantung saka panggilan ajax. Ing kahanan iki, kita kudu nemokake elemen kanthi klasa lan gaya.

Tuladha:

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

Atribut ora ngemot nilai tartamtu

Ing WebDriver, kepiye sampeyan nemokake elemen sing atribute ngemot nilai sing ora sampeyan pilih? Contone pamilih CSS iki nuduhake carane ora dipilih miturut nilai atribut tartamtu


Umpama sampeyan duwe akeh elemen sing nuduhake atribut lan nilai atribut sing padha, nanging sawetara elemen kasebut duwe variabel liyane sing ditambah karo nilai kasebut. contone:

Ing cuplikan ing ndhuwur, kita pengin milih dina sing kasedhiya (yaiku loro sing pungkasan div elemen)

Kaya sing bisa dideleng, kabeh papat div ngemot 'dina tanggalan-' nanging sing loro pisanan uga ngemot 'ora kasedhiya' sing ora dikarepake.

Pamilih CSS kanggo Ora milih loro div pertama yaiku


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

Goleki Unsur Bocah

Kanggo nemokake tag gambar, kita nggunakake:

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

Unsur Anak Multiple

Ana kesempatan nalika ana macem-macem elemen bocah ing elemen induk sing padha kayata elemen dhaptar


  • Apple

  • Orange

  • Banana

Kaya sing bisa dideleng, elemen dhaptar individu ora ana id sing ana gandhengane. Kanggo nemokake elemen kanthi teks 'Oranye', kita kudu nggunakake nth-of-type.

Tuladha:


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

Kajaba iku, kanggo milih elemen bocah pungkasan, yaiku 'Pisang', kita nggunakake:

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

Ids Generated Dynamic

Kita bisa nggunakake matrik senar kanggo nemokake elemen kanthi Ids sing digawe kanthi dinamis.

Ing conto iki, kabeh telung unsur div ngemot tembung 'acak'.

Atribut Diwiwiti karo

Kanggo milih sing pertama div elemen, kita bakal nggunakake ^= tegese 'diwiwiti karo':

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

Atribut Entuk karo

Kanggo milih sing nomer loro div elemen, kita bakal nggunakake $= tegese 'dipungkasi karo':

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

Atribut Ngemot

Kanggo milih sing pungkasan div elemen sing bakal digunakake *= tegese 'sub-string'

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

Kita uga bisa nggunakake contains

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

Wacan luwih lanjut: