xpath抓取html中的json,在谷歌Chrome插件中通过xpath获取元素值(javascript)
我正在尝试使用谷歌浏览器扩展程序实现一个应用程序,该应用程序从另一个Chrome扩展程序获取xpath。然后找到元素的价值,并用它做一些事情。我在Chrome插件中有一个侦听器,它接收用户用光标指向的html元素的xpath的JSON。例如/HTML/BODY/DIV[@id='viewport']/DIV[@id='main']/DIV[@id='cnt']/DIV[6]/DIV[@id='rc
我正在尝试使用谷歌浏览器扩展程序实现一个应用程序,该应用程序从另一个Chrome扩展程序获取xpath。然后找到元素的价值,并用它做一些事情。
我在Chrome插件中有一个侦听器,它接收用户用光标指向的html元素的xpath的JSON。例如/HTML/BODY/DIV[@id='viewport']/DIV[@id='main']/DIV[@id='cnt']/DIV[6]/DIV[@id='rcnt']/DIV[3]/DIV[@id='center_col']/DIV[@id='res']/DIV[@id='search']/DIV[1]/DIV[@id='ires']/OL[@id='rso']/DIV[2]/LI[2]/DIV[1]/DIV[1]/DIV[1]/SPAN[1]
我想获取该元素的值。所以,如果:
,我有xpath = /html[1]/body[1]/div[1]这个元素
我想获得字符串 “Hello”
我知道有一个函数在JavaScript中检索元素:
var xPathResult = document.evaluate(xPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);,
但我几乎总是检索null。 所有的代码在这里:
chrome.runtime.onConnectExternal.addListener(function (port) {
port.onMessage.addListener(function (msg) {
var index;
if (msg != null) {
// console.log("Received message: " + msg);
var objJSON = JSON.parse(msg);
for (index = 0; index < objJSON.length; ++index) {
var xpath = objJSON[index].xpath;
var url = objJSON[index].url;
if (xpath != "Not looking at browser") {
var xp = getElementByXPath(xpath); //returns null all the time
var value = xp.innerHTML;
}
}
}
});
});
var getElementByXPath = function (xPath) {
var xPathResult = document.evaluate(xPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
return xPathResult.singleNodeValue;
};
你能帮忙吗?在xpaths中没有错误 - 在运行时没有错误的xpath抛出异常,如果我通过xpaths检查Chrome中的元素,它也看起来没问题。
更多推荐

所有评论(0)