1

我有以下标记:

<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 表达式定位两个是按钮:

//div/div/button[text()='Yes']  

但是我只想要Yes第一个 div 的按钮,如下所示:

//div/div[text()='Question1']

我怎样才能找到它?

4

6 回答 6

2

使用

//div[div[. = 'Question1']]
   /div/button[@type = 'button'][. = 'Yes']

这将选择任何button其字符串值为"Yes"且其type属性具有字符串值"button"并且(button元素)是diva 的子级的div,该子级是div具有字符串 value的子级的 a 的子级"Question1"

于 2012-04-23T13:25:59.663 回答
1

您可以像这样定位第一个button(如果您不想硬编码Question1到查询中):

(//div/div/button[text() = 'Yes'])[1]

另请参阅MSDN XPath 示例

于 2012-04-23T13:10:12.460 回答
1

使用您的代码段测试并为我工作:

//div/div[preceding-sibling::*[position() = 1][.="Question1"]]/button[.="Yes"]
于 2012-04-23T13:11:40.773 回答
0

试试 //div/div[text()='Question1']/button[text()='Yes']

于 2012-04-23T13:07:57.840 回答
0

尝试这样的事情

/x:html/x:body/x:div[1]/x:div[2]/x:button[2]
于 2012-04-23T13:08:19.220 回答
0

这应该可以解决问题:
//div[div[text()='Question1']]/div/button[text()='Yes']
或者
//div[div/text()='Question1']/div/button[text()='Yes']
这会选择具有 text='Yes' 的按钮并且其父级的子 div 具有 text='Question1'

此外,如果您对第一个 div 感兴趣,无论文本如何,请使用:

//div[1]/div/button[text()='Yes']
更具体地说,您应该指定父级:
/div[1]/div/button[text()='Yes']-如果它是根(如您的示例中所示) //parentNode/div[1]/div/button[text()='Yes']-如果是parentNode

于 2012-04-23T13:08:27.677 回答