【发布时间】:2015-09-13 21:24:01
【问题描述】:
我有以下html sn-p:
<table>
<tr>
<td class="foo">a</td>
<td class="bar">1</td>
<td class="bar">2</td>
<td class="foo">b</td>
<td class="bar">3</td>
<td class="bar">4</td>
<td class="bar">5</td>
<td class="foo">c</td>
<td class="bar">6</td>
<td class="bar">7</td>
</tr>
</table>
我正在寻找从 .foo 元素开始并在下一个 .foo 元素之前选择所有后续 .bar 元素的 XPath 1.0 表达式。
例如:我从a 开始,只想选择1 和2。
或者我从b开始,想选择3、4和5。
背景:我必须为这个方法找到一个 XPath 表达式(使用 Java 和 Selenium):
public List<WebElement> bar(WebElement foo) {
return foo.findElements(By.xpath("./following-sibling::td[@class='bar']..."));
}
有没有办法解决这个问题?
该表达式应适用于所有 .foo 元素,而无需使用任何外部变量。
感谢您的帮助!
更新:对于这些特殊情况显然没有解决方案。但是,如果您的限制较少,则提供的表达式可以完美运行。
【问题讨论】:
-
你想要的是你给出的第二个表达式匹配的内容?这意味着:给我第一个
.bar孩子及其所有后续.bar兄弟姐妹,直到第一个.foo。是这样吗? -
是的,这正是我要找的。span>
-
@nwellnhof 我相信这不是重复的,因为那里的所有解决方案都依赖于节点的空文本、某个 id、XSLT 上下文和函数或 XPath 2.0。这些都不适用于这里。
标签: xpath