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]
我有以下内容:
..
<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]