首页  编辑  

XPATH中如何排除父节点为某些属性下的子节点

Tags: /计算机文档/网页制作/   Date Created:
xpath中定位元素的时候,例如通过button的文字标签来定位,但可能页面上存在同名字的button,但其父节点可能被隐藏,如何排除这些display:none的div下的button呢?
例如考虑如下布局:
<div style="display: none;">
  <div>
    <button><div><span>Next</span></div></button>
  </div>
</div>

<div>
  <div>
    <button><div><span>Next</span></div></button>
  </div>
</div>
此时xpath: "//button[contains(.//span, 'Next')]" 会查找到第一个Next按钮,这不一定是我们想要的,如果要查找第二个Next按钮,那么需要用以下xpath语法:
//button[contains(.//span, 'Next') and not(ancestor::div[@style='display: none;'])]
或者:
//button[contains(.//span, 'Next') and not(ancestor::div[contains(@style, 'display: none')])]
用上面的语法就能排除 display: none 的div下的对应节点了