无法使用xpath

时间:2015-10-07 09:35:10

标签: html xpath

这是我的HTML代码:

<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返回&#34; true&#34;而不是我的要求&#34;不,不,格雷&#34;。我知道我的xpath有问题,但我无法理解。

编辑:好的,我取得了一点成功,我得到了#34;不,不,&#34;使用这个xpath:

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

但无法得到&#34;格雷&#34;因为该值不在span标记内。

1 个答案:

答案 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()