我正在尝试使用谷歌浏览器扩展程序实现一个应用程序,该应用程序从另一个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]

我想获取该元素的值。所以,如果:

Hello

,我有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中的元素,它也看起来没问题。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐