使用 js 操作 xpath
- 定义一个xpath
var xpath = '//a[@class="router-link-exact-active router-link-active"]';
- 创建xpath,解析网页 // 创建 DOMParser 对象
var parser = new DOMParser();
// 将 HTML 字符串转换为 DOM 对象
var doc = parser.parseFromString(document.documentElement.outerHTML, 'text/html');
- 常见的操作
// 获取元素文本
var elem = doc.evaluate(xpath, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var content = elem.textContent;
// 点击元素
doc.evaluate('xpath定位表达式', document).iterateNext().click();
// 获取value值
doc.evaluate('xpath定位表达式', document).iterateNext().value();
// xpath定位转为js
doc.evaluate('xpath定位表达式', document).iterateNext();
// 定位到元素
doc.evaluate('xpath定位表达式', document).iterateNext().scrollIntoView();
- 关于 evaluate 在浏览器里直接调用
var xpathResult = document.evaluate(
xpathExpression,
contextNode,
namespaceResolver,
resultType,
result
);
- xpathExpression 表示要计算的 Xpath 字符串。
- contextNode 表示本次查询的上下文节点(参照 XPath 规范 http://www.w3.org/TR/xpath)。通常会使用 document。
- namespaceResolver 是函数。传入名空间前缀,返回跟此前缀相关的名空间 URI(字符串)。通常用来解析 Xpath 内的前缀,以便对文档进行匹配。HTML 文档或者不使用名空间前缀的文档,通常传入 null。
- resultType 是整数。指定所返回的 XPathResult 的类型,常使用 named constant properties,如 XPathResult.ANY_TYPE,范围 0 到 9,见 https://developer.mozilla.org/zh-CN/docs/Web/API/Document/evaluate 。
- result 为 XPathResult 型,用以存储查询结果。通常传入 null,此时将创建新的 XPathResult 对象。
例子
var xpath = '/html/body/div[3]/maxamineignore/div[2]/div[2]/span[2]/table[2]/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[2]/td';
var deviceId = document.evaluate(
xpath,
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
).singleNodeValue.innerText;
该方法返回值可用属性 https://developer.mozilla.org/en-US/docs/Web/API/XPathResult