如何用XPath提取锚标签外的文本?如何提取不含关闭按钮的错误信息?
XPath 解决方案
1. 获取标签之外的文本内容
如果要提取全局范围内所有不在标签里的文本,用这个表达式:
//text()[not(parent::a)]
要是只想提取某个特定节点下(比如某个
内部)的非文本,把路径限定到该节点即可:
//div//text()[not(parent::a)]
原理:text()选中所有文本节点,not(parent::a)过滤掉父节点是的文本。
2. 提取
你之前用$x("//div[@id='sub']")选中的是整个div节点,自然会包含里面的关闭按钮文本。要精准提取错误信息,用下面的表达式:
//div[@id='sub']/text()[normalize-space()]
或者如果错误信息和关闭按钮是同级子节点,也可以用更严谨的过滤:
//div[@id='sub']//text()[not(parent::a[@class='close'])]
- 第一个表达式:
/text()直接选div的直接子文本节点,normalize-space()去掉多余空白字符,刚好拿到"Error Message: Invalid Entry"。 - 第二个表达式:过滤掉父节点是带
close类的标签的文本,适配结构稍复杂的场景。
内容的提问来源于stack exchange,提问作者AgileQA
相关产品推荐
相关产品推荐

