xpath匹配含有指定文本的标签
对于一般的情况, 就是标签中只包含文字, 这种的比较规范, 如:
<div><ul id="side-menu"><li class="active"><a href="#">电子账户a><ul class="nav"><li>子菜单1li><li>子菜单2li>ul>li>ul>
div>
现在想取a
节点, 可以这样写: //ul[@id='side-menu']/li/a[contains(text(),"电子账户")]
但是如果a
节点是这样呢? 电子账户这几个字没有被一个明确的标签包裹:
<div><ul id="side-menu"><li class="active"><a href="#"><i>图标i> 电子账户<span>箭头span>a><ul class="nav"><li>子菜单1li><li>子菜单2li>ul>li>ul>
div>
此时再用上边的xpath表达式就到不到了.
不过可以借助string()
, 将a标签里边的东西全部转换成字符串, 再用contains()
判断:
//ul[@id='side-menu']/li/a[contains(string(), '电子账户')]
这样就可以了, 非常实用.
欢迎补充指正!