2009-05-14 18 views
13

Bir belgedeki bir özelliğin kısmi değerini bilmek bilinen ama. Herhangi bir değeri temsil etmek için kullanabileceğim bir karakter var mı? Örneğin, bir giriş için bir etiketin değeri "A. Seçim 1" dir. "Seçenek 1" yazdığını biliyorum, ancak "Seçenek 1" den önce "A." veya "B." diyip söylemeyeceğini değil. Aşağıda ilgili HTML. Orada giriş ve etiket için diğer nitelikler, ancak sayfa görüntülendiğinde her zaman aynı değildir, bu yüzden referans olarak kullanamazsınız:XPath kısmi şeyi

<tr> 
<td><input type="checkbox" /><label>A. Choice 1</label></td> 
</tr><tr> 
    <td><input type="checkbox" /><label>B. Choice 2</label></td> 
</tr><tr> 
<td><input type="checkbox" /><label>C. Choice 3</label></td> 
</tr><tr> 
    <td><input type="checkbox" /><label>D. Choice 4</label></td> 
</tr> 

Bu kullanıyorum XPath ifadesidir HTML A olacaksa

//td[label="Choice 1"]/input 

bilmiyorum: bir HTML önünde olması dışında, bir sonraki "Seçim 1" değerine sahip etikete girişini seçmek için A, B veya C vb. Ancak doğru girdinin yanında her zaman Seçenek 1 metninin bulunacağını biliyorum. Nasıl etiket Seçim 1 içeriyorsa seçim 1'e eşit olmanın aksine, bunu seçmek için söylüyorlar?

cevap

27

Kişisel XPath ifadesi şu şekilde görünmelidir:

//td[contains(@label, 'Choice 1')]/input 

Sen Choice 1 içerir ve daha sonra bu td öğelerinin içindeki input elemanlarını seçmek bir etikete sahip tüm td öğeleri seçin.

EDIT: Tomalak'ın yorumu, 'Choice 11' (veya 'Choice 12345', ...) 'a karşı bir eşleşmeyi engellemek için bir düzeltmeyi doğru bir şekilde önerir.

+0

müthiş, teşekkür: - bana doğru yönde işaret Ronald cevap sayesinde

<node> <p>This is left-aligned.</p> <div align="left" >This is aligned LEFT using HTML attribute.</div> <p style="text-align: center;" >This is centered using CSS style attribute.</p> <div align="center" >This is CENTERED.</div> <p style="text-align: right;" >This is right-aligned.</p> </this> 

Bu xpath ifadesi çalıştı: Bu soruda 'düğümleri' dir. Tam olarak ihtiyacım olan buydu. bana da yararlı – avaleske

+0

, teşekkürler :) –

+5

Hayır, gibi görünmelidir '// td [içeriyor (concat (' ' etiket,' '),' Choice 1')]/input' veya' Seçim 11 maç olacak '. – Tomalak

4

Bulunan Ronald çözüm bir düğüm boş olmayan bir nitelik 'hizalama' OR metin değeri 'text-align içeren bir nitelik 'tarzı' ya sahip olup olmadığını test etmek için bir yol bulmaya çalışırken.

//*[contains(@style, 'align') or @align!='']