2015-10-07 97 views
0

這裏多個值是我的HTML代碼:無法選擇使用XPath

<table id="laptop_detail" class="table"> 
    <tr> 
     <td style="padding-left:18px" class="ha">Touchscreen</td> 
     <td class="val"><span class="no_icon">No</span></td> 
    </tr> 
    <tr> 
     <td style="padding-left:18px" class="ha">Water Dispenser</td> 
     <td class="val"><span class="no_icon">No</span></td> 
    </tr> 
    <tr> 
     <td style="padding-left:18px" class="ha">Colour/Material</td> 
     <td class="val">Grey</td> 
    </tr> 
</table> 

這裏是我的XPath:

$x('//*[@id="laptop_detail"]//tr/td[contains(. ,"Touchscreen")]/following-sibling::td[1]/span/text() and //*[@id="laptop_detail"]//tr/td[contains(. ,"Water Dispenser")]/following-sibling::td[1]/span/text() and //*[@id="laptop_detail"]//tr/td[contains(. ,"Colour")]/following-sibling::td[1]/text()') 

但我的XPath返回 「真」,而不是我的要求「不,不,灰色「。我知道我的xpath有問題,但我無法理解它。

編輯:好吧我有一個小的成功,我能得到「沒有,沒有」使用此XPath:

$x('//*[@id="laptop_detail"]//tr/td[contains(. ,"Touchscreen") or contains(. ,"Water")]/following-sibling::td[1]/span/text()') 

,但無法獲得「灰色」爲價值並不裏面跨度標籤。

+1

爲什麼不只是添加一個表達式爲灰色使用|運營商。 –

+0

@DmytroPastovenskyi不知道我是否可以這樣做。 –

+0

然後嘗試下面的解決方案,它必須爲你工作。 –

回答

0

這裏是一個修復到您的解決方案(我已經添加|運算符):

//*[@id="laptop_detail"]/tr/td[contains(. ,"Touchscreen") or contains(. ,"Water")]/following-sibling::td[1]/span/text() | //*[@id="laptop_detail"]/tr/td[contains(. ,"Colour/Material")]/following-sibling::td[1]/text() 

你可以用一點更容易語法(運行速度更快),如果它是你的邏輯可以接受的。

/table[@id="laptop_detail"]/tr/td[@class='val']/span/text() | /table[@id="laptop_detail"]/tr/td[@class='val']/text()