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.


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


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"] {

}

8

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.