XPath元素定位

JavaScript 执行 XPath

1
2
3
var a= document.evaluate("//span[text()='清单']/..", document, null, XPathResult.ANY_TYPE, null);
var b=a.iterateNext();
b

XPath定位方法

以下XPath定位方法,都可以动态组合,需要用 /// 分割定位函数。

/:当前元素的下一级

//:当前元素的所有子

通过元素名称定位

1
2
//div
//span

通过元素属性定位

1
2
3
//*[@attribute='value']
//*[@id='myId']
//div[@id='myId']

通过多个属性定位

1
2
3
//*[@attribute1='value' and @attribute2='value']
//*[@class='myClass' and @name='myName']
//div[@class='myClass' and @name='myName']

通过复杂属性行为

1
2
//*[contains(concat(' ', normalize-space(@class), ' '), ' myClass ')]
//div[contains(concat(' ', normalize-space(@class), ' '), ' myClass ')]

通过元素文本内容定位

1
2
3
//*[text()='text']
//div[text()='text']
//button[text()='submit']

通过父级元素定位子元素

1
2
//div/span   查询div直接子集下的span
//div//span 查询div所有子集的span

通过元素本身获取父级元素

1
2
3
//div/..
//div/../..
//*[attribute='value']/..

通过索引定位元素

1
2
(//div)[1]  下表从1开始
//div/span[1]

获取下一个元素

1
2
//div/following-sibling::div
//div/following-sibling::span
1
[not(contains(@style,'display: none;'))]

本文地址: https://github.com/maxzhao-it/blog/post/565f648c/