//div/following-sibling::p[preceding::div]
应该让你得到所有的 p ( a,b,c,d, e,f,g,h
) 如果 div 中包含不同的文本,你可以添加一些条件。例如,在以下示例中仅获取 a,b,c,d 将是://div[text()='a']/following-sibling::p[preceding::div]
或者,如果您有一些可以区分 div 的类、类别或其他任何东西(例如示例中的类)://div[@class='peach']/following-sibling::p[preceding::div]
<div>
<div class='peach'>a</div>
<p>a</p>
<p>b</p>
<p>c</p>
<p>d</p>
<div id='abc_123132' >b</div>
<p>e</p>
<p>f</p>
<p>g</p>
<p>h</p>
<div>c</div>
</div>
最后一个例子是你的代码是自动生成的,你只知道 div 的某些属性的一部分。在上面的示例中,您可以像这样选择 e,f,g,h:
//div[contains(@id,'abc')]/following-sibling::p[preceding::div]
获取在 id 包含 'abc' 的 div 之后并在另一个 div 之前的所有兄弟 p