Bagaimana cara menggunakan "tidak" di xpath?


164

Saya ingin menulis semacam itu:

//a[not contains(@id, 'xx')]

(artinya semua tautan yang ada atribut 'id' tidak mengandung string 'xx')

Saya tidak dapat menemukan sintaks yang tepat.

Jawaban:


241

not () adalah fungsi dalam xpath (sebagai lawan dari operator), jadi

//a[not(contains(@id, 'xx'))]

apakah ada cara untuk mengatakan ambil semua tag <p> tetapi bukan tag <a> di dalamnya? bayangkan sesuatu seperti teks teks <p> <a class="x"> TEXT </a> teks </p>. saya ingin semua teks dalam p tetapi bukan TEKS dalam. apakah itu mungkin dengan XPath? Ini bukan kasus saya, ini sedikit lebih rumit dari itu tetapi kurang lebih sama.
— Ali


13

Tidak satu pun dari jawaban ini yang berfungsi untuk saya untuk python. Saya diselesaikan dengan ini

a[not(@id='XX')]

Anda juga dapat menggunakan atau mengkondisikan xpath oleh |operator Anda. Seperti

a[not(@id='XX')]|a[not(@class='YY')]

Terkadang kita menginginkan elemen yang tidak memiliki kelas. Jadi kamu bisa suka

a[not(@class)]

1

Gunakan boolean functionseperti di bawah ini:

//a[(contains(@id, 'xx'))=false]
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.