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下的对应节点了