我有以下标记:
<div>
<div>Question1</div>
<div>
<button type="button">No</button>
<button type="button">Yes</button>
</div>
</div>
<div>
<div>Question2</div>
<div>
<button type="button">No</button>
<button type="button">Yes</button>
</div>
</div>
以下XPath表达式找到两个yes按钮:
//div/div/button[text()='Yes']
但是我只想要第一个div的Yes
按钮,如:
//div/div[text()='Question1']
我如何找到它?
答案 0 :(得分:2)
使用强>:
//div[div[. = 'Question1']]
/div/button[@type = 'button'][. = 'Yes']
这会选择其字符串值为button
且其"Yes"
属性的字符串值为type
且"button"
元素)为其子元素的button
div
div
的孩子,其div
子项的字符串值为"Question1"
。
答案 1 :(得分:1)
您可以像这样定位第一个button
(如果您不想将Question1
硬编码到查询中):
(//div/div/button[text() = 'Yes'])[1]
答案 2 :(得分:1)
使用您的代码段测试并为我工作:
//div/div[preceding-sibling::*[position() = 1][.="Question1"]]/button[.="Yes"]
答案 3 :(得分:0)
尝试// div / div [text()='Question1'] /按钮[text()='是']
答案 4 :(得分:0)
尝试这样的事情
/x:html/x:body/x:div[1]/x:div[2]/x:button[2]
答案 5 :(得分:0)
这应该可以解决问题:
//div[div[text()='Question1']]/div/button[text()='Yes']
OR
//div[div/text()='Question1']/div/button[text()='Yes']
这将选择具有text ='Yes'并且父级具有text ='Question1'的子div的按钮
如果您对第一个div感兴趣,无论文本如何,请使用:
//div[1]/div/button[text()='Yes']
更具体地说,你应该指定父母:
/div[1]/div/button[text()='Yes']
- 如果它是root(如您的示例中所示)
//parentNode/div[1]/div/button[text()='Yes']
- 如果它是 parentNode