2016-11-15 130 views
0

我知道有关于XPath的简单的问题tousands,但我不明白如何将两个不要太简单表达式组合...的XPath搜索类和文字 - 将两个XPath的选择

我的XML结构:

<div class="some-container"> 
    <div class="btn btn-blue"> 
     <div class="btn-text"><!-- Select by class --> 
      <span> <!-- Select by text--> 
       Download 
      </span> 
     </div> 
    </div> 
</div> 

按类别选择

我知道实现由后级搜索以选择div:

//*/div[contains(concat(' ', @class, ' '), ' btn-text')] 

选择通过短信

还选择了,我知道我可以简单地添加/span跨度,但后来我想通过文字来选择。 对于用例我得到了XPath的(form here):

//*/text()[normalize-space(.)='Download']/parent::* 

这些选择都工作正常,但我想它们合并

  1. 搜索类 “BTN”
  2. 搜索对于正确匹配的跨度内的文本

我试过到Concat的一样,但不工作test-example

//div[contains(concat(' ', @class, ' '), ' btn-text')]/text()[normalize-space(.)='Download']/parent::* 

即使它会工作没有选择由span标签

任何人谁可以帮助?

+0

'// DIV [@class = 'BTN-文本']/SPAN [文本( )= '下载']'? – sideroxylon

回答

1

您的XPath正在寻找div中的文本节点,但您要查找的文本节点位于span之内。这就是为什么它没有成功。

为了得到它的工作,只是改变了XPath来查找span而不是文本节点:

//div[contains(concat(' ', @class, ' '), ' btn-text ')]/span[normalize-space(.)='Download']