XPath preceding-sibling 根据 parent 的兄弟姐妹的值找到 child?

XPath preceding-sibling to find child based on parent's sibbling's value?

我有以下内容:

..

<div id="list">
  <div>
    <input id="input_randomnumber"/>
  </div>
  <div>
    <label for="input_randomnumber">Text To Match</label>
  </div>
</div>

..

我想要 select 输入,其中有一个带有特定文本的标签。我尝试使用 xpath 和 preceding-sibling 解决它,但我没有让它工作。如何使用轴 select 或作为过滤器?

显然以下解决方案甚至无效:

(//div[@id="list"]/div/preceding-sibling::div[span[text()="Text To Match"]])/input

根据以下答案,这些解决方案有效:

使用轴:

//div[@id = 'list']/div[following-sibling::div[1]/label = 'Text To Match']/input

使用@for和@id匹配,比较优雅(但是性能?):

//input[@id = //label[text()="Text To Match"]/@for]

我想你想要 //div[@id = 'list']/div[following-sibling::div[1]/label = 'Text To Match']/input.

I want to select the input, for which there is a label with a certain text.

您可以尝试以下方法:

<label> 的文本选择:

//input[@id = //label[text()="Text To Match"]/@for]

通过 <label>for 属性和 <input>id 属性选择:

//input[@id = //label[@for="input_randomnumber"]/@for]