首页 > 解决方案 > 如何获取 XPath 的 Text() 值

问题描述

我正在尝试在表中获取 someValue 的 text() 值。

这是html:

<div class="giveHeight">
<table width="100%" cellspacing="0" cellpadding="3" border="0" id="loads" class="dataTable" aria-describedby="loads_info">
    <thead>
        <tr class="tableHeading" role="row">
            ...Header...
        </tr>
    </thead>                    
    <tbody role="alert" aria-live="polite" aria-relevant="all">
        <tr class="odd">
            <td class=" ">SomeValueInTheFirtColumn</td>
            <td style="text-align: center;" class=" ">1</td>
            <td class=" ">aabbcc</td>
            <td class=" ">CityA</td>
            <td class=" ">AA</td>
            <td class=" ">CityB</td>
            <td class=" ">BB</td>
            <td style="text-align: right;" class=" ">00</td>
            <td style="text-align: right;" class=" ">$1.00</td>
            <td style="text-align: right;" class=" ">$1.00</td>
            <td style="text-align: right;" class=" ">
                <a href="/xx/xx.asp?id=99999">
                    <img src="/tab/images/icons/view.gif" border="0" alt="view" width="14" height="14">
                </a>
            </td>
            <td style="text-align: right;" class=" "></td>
        </tr>
    </tbody>
</table>

第一列中,有一个我想要查找的值。但是,它取决于cityA和cityB的一部分值。

我正在尝试类似的事情,但没有工作:

//div[@class='giveHeight']/table/tbody/tr/td/td[following-sibling::td[text()='CityA']/following-sibling::td[text()='CityB']]/text()

标签: xpath

解决方案


我不确定这是否是您想要的,但要获得价值SomeValueInTheFirtColumn,您的 XPath 中只有一个td太多。所以改成

//div[@class='giveHeight']/table/tbody/tr/td[following-sibling::td[text()='CityA']/following-sibling::td[text()='CityB']]/text()

你得到SomeValueInTheFirtColumn的结果。

但以下更短的表达式确实达到了相同的结果:

//div[@class='giveHeight']/table/tbody/tr/td[1]/text()

另一方面,如果您想检索CityA和之间的值 'AA' CityB,以下 XPath 将提取您想要的内容:

//div[@class='giveHeight']/table/tbody/tr/td[following-sibling::td[text()='CityB'] and preceding-sibling::td[text()='CityA']]/text()

推荐阅读