对于一般的情况, 就是标签中只包含文字, 这种的比较规范, 如:
<div>
<ul id="side-menu">
<li class="active">
<a href="#">
电子账户
</a>
<ul class="nav">
<li>子菜单1</li>
<li>子菜单2</li>
</ul>
</li>
</ul>
</div>
- 1现在想取
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>子菜单1</li>
<li>子菜单2</li>
</ul>
</li>
</ul>
</div>
此时再用上边的xpath表达式就到不到了.
不过可以借助string()
, 将a标签里边的东西全部转换成字符串, 再用contains()
判断:
//ul[@id='side-menu']/li/a[contains(string(), '电子账户')]
这样就可以了, 非常实用.
欢迎补充指正!