Xpath语法正确吗?

时间:2014-09-17 20:30:35

标签: java html xpath htmlunit

我需要在现场测试一个程序,所以在我到达现场之前我无法测试它。我想知道以下Xpath是否正确。我已阅读http://www.w3schools.com/xpath/xpath_syntax.asp上的语法,但我仍不确定这是否正确。

如果tablerow <tr><tr>中有一个按钮,则会有<td>。在<td>内指定了<button value = 'button'>。 我认为Xpath将是:

"/html/body//table//tr//td//button[@value=['button']"

这是对的吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

正确的XPath很可能是

//button[@value = 'button' and ancestor::td]

如果它们不是button元素的直接子元素,也会在td内找到td个元素。如果您知道button元素始终是td的直接子元素,则可以使用类似

的表达式
//td/button[@value = 'button']

//button[@value = 'button' and parent::td]

在这么多地方你不需要//而你不需要在html开始表达。 //descendant-or-self::轴)可能会或可能不会影响性能,具体取决于应用程序。

另外,正如John在我的回答前30秒指出的那样,你的表达中有一个多余的括号。

答案 1 :(得分:0)

缺少右括号,所以没有。第二个左括号不应该在那里。

/html/body//table//tr//td//button[@value='button']

顺便说一句,双//选择器很慢,应该尽可能避免。我推荐

/html/body/table/tbody/tr/td/button[@value='button']

//td/button[@value='button']

代替。我们知道<td>会在一个表格中,因此如果您需要额外的tabletrtd元素搜索,则不需要反正使用//