我必须根据某列中的值,特别是第一列中的某个行来识别某一行。
此表没有id值或类值。这只是tr's
和td's
。
我已经到了
//tr[td="1"]
但是只查找其中包含任何tabledata的表行,其文本与值1匹配,而不仅仅是匹配1的第一个td
。
我不确定如何处理td
中的第一个tr
并将其与某个值匹配。我认为,一旦有了这个,我就可以使用/ancestor::td
这样的东西来回到td
有人可以帮忙吗?任何帮助将不胜感激。
修改
在发布此问题后的两分钟内,我想出了这个
//tr/td[position() = 1 and text() = "pizza 1"]
这使得我选择第一个td
文本值为“披萨1”,所以现在我只需要能够根据它选择tr。
答案 0 :(得分:3)
您可以使用嵌套谓词过滤器来查找第一个TD元素包含“1”的任何TR元素。
//tr[td[position() = 1 and contains(., '1')]]
答案 1 :(得分:1)
如果您想要匹配td
的第一个1
,可以使用:
//tr[td="1"][1]
在您进行编辑后,要获取父级,您可以使用..
,因此:
//tr/td[position() = 1 and text() = "pizza 1"]/..
会为您提供tr
而不是td
。
如果你有多行匹配并且只想要第一行,你仍然可以使用[1]
,只需在整个表达式之外使用它(注意整个表达式周围的()[1]
):
(//tr/td[position() = 1 and text() = "1"]/..)[1]