xpath:查找不同行中具有相同位置的表格单元格

时间:2013-09-23 13:25:42

标签: html xpath selenium-webdriver

我正在解析包含如下结构的网页:

<tr>
    <td>Label 1</td>
    <td>Label 2</td>
    <td>Label 3</td>
    <td>Something else</td>
<\tr>
<tr>
    <td>Item 1</td>
    <td>Item 2</td>
    <td>Item 3</td>
<\tr>

我需要做的是根据它的标签选择一个项目,所以我的想法是如果标签位于其行的第3个标签中,我可以抓住下一行中的第3个标签来查找该项目。我无法想办法以这种方式使用position()函数,也许xpath(1.0)无法处理这种类型的过滤。

到目前为止,我最好的尝试是://td[ancestor::tr[1]/preceding-sibling::tr[1]/td[position()]]。我希望position()函数可以在xpath开头抓取<td>的位置,因为xpath的其余部分是该节点的过滤器。

我正在尝试做什么?

1 个答案:

答案 0 :(得分:6)

您走在正确的轨道上 - 是的,您可以将position()count()一起使用。

选择给定Item 2的文字Label 2

//td[. = 'Label 2']/../following-sibling::tr/td[position() = count(//td[. = 'Label 2']/preceding-sibling::td)+1]/text()

说明:选择第n个单元格,其中 n 由具有所需标签的单元格之前存在的兄弟单元格数给出在上一行。实际上,使用count()函数确定标签行中的位置,然后通过匹配其position()来选择下一行中的相应单元格。