XPath父级基于几个孩子

时间:2014-06-22 16:06:19

标签: html xml selenium xpath

如何选择包含<tr>ccc的元素的父ddd,而不选择其他元素?

即。来自以下XML:

<table>
    <tr>
        <td>aaa</td>
        <td>bbb</td>
        <td>select</td>
    </tr>
    <tr>
        <td>ddd</td>
        <td>ccc</td>
        <td>select</td>
    </tr>
    <tr>
        <td>ccc</td>
        <td>ddd</td>
        <td>select</td>
    </tr>
    <tr>
        <td>aaa</td>
        <td>ccc</td>
        <td>select</td>
    </tr>
</table>

选择此行:

<tr>
    <td>ccc</td>
    <td>ddd</td>
    <td>select</td>
</tr>

或者,如何在td的同一行td&amp;上选择第三个ccc(其中包含选择)。 ddd

1 个答案:

答案 0 :(得分:3)

XPath表达式包含多个位置步骤。每个步骤都为谓词([...]内)或后续步骤创建上下文。 last 步骤包含有效选择的结果集。您可以在任何步骤中应用一个或多个谓词,以减少设置。

此表达式选择包含tr元素的td元素,其中字符串值为aaatd元素的字符串值为bbb

//tr[td='aaa' and td='bbb']

此表达式将从第二个和第三个td(包含<td>select</td>的节点中选择包含两个<tr>节点(td='ccc' and td='ddd')的 1}}:

//tr[td='ccc' and td='ddd']/td[3]

您也可以堆叠谓词,而不是使用。每个谓词都会减少结果集,从而创建后续谓词运行的上下文。这与上面的表达式具有相同的效果:

//tr[td='ccc'][td='ddd']/td[3]