Katakanlah saya ingin mengklik w3schools.com (pojok kiri atas) di https://www.w3schools. com/cssref/css_selectors.asp Jadi ada yang seperti ini..

a[href*="w3schools"]

Lebih spesifik..

div.w3-container.top > a[href*="w3schools"][.w3schools-logo]

Sesuatu seperti.... driver.find_elements_by_css_selector("div.w3-container.top > a[href*="w3schools"][.w3schools-logo]")Ini sepertinya tidak berfungsi di Selenium.

Apakah yang saya tanyakan mungkin? Menggunakan a[href*="w3schools"] akan sangat mempersempit pemilih CSS HREF tanpa harus menggunakan elemen halaman lainnya.

0
user8215072 26 Agustus 2017, 12:22

2 jawaban

Jawaban Terbaik

Dari apa yang Anda katakan kepada saya, sepertinya kesalahan dalam python Anda daripada kesalahan dalam CSS Anda.

Ini adalah kode Anda saat ini:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​="w3schools"]")

Ubah menjadi ini:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​='w3schools']")

Pada dasarnya, gunakan tanda kutip tunggal (') di CSS Anda.


Coba salah satu dari pemilih ini:

div.w3-container.top > a[href*='w3schools']
div.w3-container.top > a
div.w3-container.top > a.w3schools-logo
div.w3-container.top > a.w3schools-logo[href*='w3schools']

Pemilih Anda memiliki sesuatu seperti a[href*='w3schools'][.w3schools-logo] yang merupakan CSS yang salah.

Jika Anda ingin menggabungkan pemilih kelas dengan pemilih atribut, itu akan terlihat seperti:

a.w3schools-logo[href*='w3schools']
0
theonlygusti 26 Agustus 2017, 09:53

Pemilih Anda hampir benar- Anda hanya perlu mengganti tanda kutip ganda dengan tanda kutip tunggal:

href*‌​‌​="w3schools" -> href*‌​‌​='w3schools'

Dan tentukan class tipe simpul atribut secara eksplisit dalam predikat:

[.w3schools-logo] -> [class='w3schools-logo']

Jadi di bawah ini harus berfungsi dengan baik:

driver.find_elements_by_css_selector("div.w3-container.top > a[href*='w3schools'][class='w3schools-logo']")
0
Andersson 26 Agustus 2017, 09:49