找到每个div的h1s,其中包含三个列表元素。 (source)
<div>
<div class="fast">
<h1>Fast</h1>
<ul>
<li>Cars</li>
<li>New Horizon</li>
<li>Chinese Food</li>
</ul>
</div>
<div class="expensive">
<h1>Expensive</h1>
<ul>
<li>Cars</li>
<li>New Horizon</li>
<li>Apple Watches</li>
</ul>
</div>
<div class="nasa">
<h1>NASA-Owned</h1>
<ul>
<li>Lunar Module</li>
<li>New Horizon</li>
</ul>
</div>
</div>
这对我有用,(但我希望找到更简单的语法)
//ul/li[count(../li)=3]/../../h1
答案 0 :(得分:2)
不能缩短/简单=)
//div[ul[count(li)=3]]/h1
PS。好的,这是最终的:
//*[ul[count(li)=3]]/h1
答案 1 :(得分:2)
我会写
//div[count(.//li)=3]/h1
但要小心:你要求“每个包含三个列表元素的div”,这会给你;接受的答案为您提供“每个元素至少包含一个未编号的列表,其中包含三个列表项”,这不是一回事,尽管它可能会在此特定测试文档中给出相同的结果。
答案 2 :(得分:1)
尝试实施following-sibling axis语法,如下所示:
//h1[following-sibling::ul[count(li)=3]]
答案 3 :(得分:1)
匹配div下的确切h1:
//div/h1[following-sibling::ul[count(li)=3]]