Pemilih CSS (id berisi bagian teks)

92

Saya punya pertanyaan. Saya memiliki elemen seperti ini:

<a> elemen dengan id = someGenerated Some: Same: 0: name

<a> elemen dengan id = someGenerated Some: Sama: 0: nama keluarga

<a> elemen dengan id = someGenerated Some: Sama: 1: nama

<a> elemen dengan id = someGenerated Some: Sama: 1: nama belakang

Saya membutuhkan pemilih CSS untuk mendapatkan nama. Masalahnya adalah saya tidak tahu bagaimana mendapatkannya. Saya mencoba a[id*='Some:Same']- itu mengembalikan semua <a>elemen. Setelah saya bisa mendapatkan elemen yang id diakhiri dengan nama. Tapi saya tidak suka ide ini. Saya pikir itu bisa dilakukan dengan beberapa pemilih lain.

TarasLviv
sumber
Bisakah Anda menambahkan beberapa contoh nyata dari <a>tag yang ingin Anda pilih dan yang tidak Anda inginkan. Akan lebih mudah untuk membantu melihat kode yang sebenarnya.
andyb
Saya tidak dapat menambahkan contoh nyata, karena kebijakan rahasia :(
TarasLviv
Tapi saya bisa menjelaskannya dengan cara lain. Atribut id berisi berikutnya: beberapa karakter yang dihasilkan + beberapa karakter statis +: elementIndexInTable: + nama kolom dalam tabel
TarasLviv
Dan apa kriteria yang Anda inginkan?
Tarken

Jawaban:

144

Coba ini:

a[id*='Some:Same'][id$='name']

Ini akan memberi Anda semua aelemen dengan id yang mengandung

Beberapa: Sama

dan memiliki id berakhiran

nama

CosminO
sumber
Nah, id * tidak berfungsi untuk saya dan dikatakan tidak dapat dievaluasi ke elemen web. Saya menggunakannya untuk menemukan iframe yang memiliki <constant><variable><constant>nama seperti id . //driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();dimana FrameID adalah bagian awal. Bagaimanapun, //a[contains(@id,'Some:Same') and contains(@id,'name')]lakukan trik untukku. Jadi 1 untuk kamu sobat.
anujin
2
Anda harus menghapus pemilih XPath dari jawaban ini, itu tidak menambahkan apa-apa dan hanya membuat air keruh
Liam
1
@CosminO Apakah Anda perlu *berikutnya id?
cokedude
@cokedude the * = operator berarti harus mengandung setidaknya nilai setelah operator. Ia bekerja dalam hubungannya dengan kondisi kedua yang harus diakhiri dengan sesuatu yang lain dengan menggunakan operator $ = Lihat ini untuk penjelasan mendalam w3schools.com/css/css_attribute_selectors.asp Jawaban singkat. * Tidak ada di sebelah id, itu di sebelah = dan membentuk operator dengan arti khusus
CosminO
21
<div id='element_123_wrapper_text'>My sample DIV</div>

Operator ^ - Mencocokkan elemen yang dimulai dengan nilai yang diberikan

div[id^="element_123"] {

}

Operator $ - Mencocokkan elemen yang diakhiri dengan nilai yang diberikan

div[id$="wrapper_text"] {

}

Operator * - Mencocokkan elemen yang memiliki atribut yang berisi nilai tertentu

div[id*="wrapper_text"] {

}
Edicarlos Lopes
sumber
8

Satu-satunya pemilih yang saya lihat adalah a[id$="name"](semua tautan dengan id yang diakhiri dengan "nama") tetapi tidak seketat yang seharusnya.

LeBen
sumber