如何使用XPath选择多个指定标签名的后续兄弟元素?
问题解答
XPath完全支持指定匹配多个标签名,你提到的类似写法是存在的,只需要调整下语法即可:
正确的多标签匹配写法
你可以通过self轴结合or逻辑实现多标签过滤,同时在末尾加[1]取第一个匹配的元素,自动跳过中间的<br>等无关节点:
//label[contains(text(),'value')]/following-sibling::*[self::div or self::input][1]
写法说明
following-sibling::*选中当前label节点所有后续的兄弟元素- 谓语
[self::div or self::input]从上述兄弟元素中过滤出标签为div或者input的元素 - 末尾的
[1]取过滤后的第一个元素,不管中间存在多少<br>、<span>之类的无关节点,都能直接定位到你需要的交互元素
适配你场景的Selenium代码示例
driver.findElement(By.xpath("//label[contains(text(),'value')]/following-sibling::*[self::div or self::input][1]"));
可选的其他写法
你也可以通过name()或者local-name()函数实现同样的效果,存在命名空间的场景下更推荐用local-name():
//label[contains(text(),'value')]/following-sibling::*[local-name() = 'div' or local-name() = 'input'][1]
内容的提问来源于stack exchange,提问作者David Gilstad
相关产品推荐
相关产品推荐

