如何使用复杂的css选择器获得最后的结果?

时间:2015-09-15 09:17:25

标签: css-selectors jsoup

<div id="container">
<p>
 <div>a</div>
 <div>b</div>
 <div><span>foo</span>c</div>
</p>
<p>
 <div>e</div>
 <div>f</div>
</p>
<p>
 <div>g</div>
 <div><span>foo</span>h</div>
 <div>i</div>
</p>
</div>

我想得到包含foo的最后一个div,即带有h的div。

在线测试:http://try.jsoup.org/~Ef0KHIiN77L_DANA7e4SpYZSVEM

2 个答案:

答案 0 :(得分:1)

单独使用选择器无法做到这一点。你能做的最好的就是

driver.switchTo().defaultContent();
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.tagName("yourFrame")));

但是在运行选择器后,您仍然需要使用#container div:has(span:containsOwn(foo)) 分别抓取最后一个元素。

答案 1 :(得分:1)

我会试试这个,但它不是一个纯粹的CSS解决方案,因为你不能轻易选择选择的最后一个元素。

Element el = doc.select("div:contains(foo):not(:has(div))").last();

我的选择器选择包含&#34; foo&#34;的所有div。但不包含任何其他div。