nasıl

2010-10-07 6 views
16

Bir div birden sınıfları varsa xpath //div[@class='class1']nasıl

Ama nasıl kullanarak aynı css sınıfı ör

<div class="class1">1</div> 
<div class="class1">2</div> 

ait DIV öğeleri listesini almak için biliyorum birden css sınıfları ile html elemanlarını almak için örn.

<div class="class1 class2">1</div> 

Xpath o zaman nasıl olacak?

+0

Belki de CSS yollarını kullanmanız daha iyi olurdu – Naramsim

cevap

47

aradığınız ifadesidir:

//div[contains(@class, 'class1') and contains(@class, 'class2')] 

ederim kolayca size ayıklama xpath ifadeleri yardımcı olabilir XPath görselleştiriciyi, düşündürmektedir. Burada bulunabilir:

http://xpathvisualizer.codeplex.com/

+1

Bu sorunla ilgili küçük bir problem, olası bir sınıf adı diğerinin alt dizesiyse potansiyel olarak kırılabileceğidir. Örneğin, 'class11' iseniz de, 'class1' içerdiği için hatalı olarak eşleşir. Bunu önlemek çok kolay, sadece sınıf adlarının birbirini içermediğinden emin olun. – Flynn1179

+0

Anlaşılan, ancak burada tartışılan şey, bir özniteliğin dize değerini taramayı içeriyorsa, XPath’da konuşmaktan kaçınılabileceğinden emin değilim. –

+3

Eğer gerçekten gerekliyse, “concat ('', @class, ''), 'class1')' vb. Içerebilir, ancak dediğim gibi, bunun gereğini ortadan kaldırmak çok kolay. – Flynn1179

-1

cssselect adında yararlı piton paket var. .

cssselect ithalat CSSSelector gelen

CSSSelector ('div.gallery') yolu

kullanılabilir bir XPath üretir:

soyundan-or-self :: div [@class ve içerdiği (concat ('' , normalize boşluk (@class), ''), 'galeri')]

Flynn1179'un cevabına çok benzer.