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.