gpt4 book ai didi

javascript - 在 google chrome 插件 (javascript) 中通过 xpath 获取元素值

转载 作者:行者123 更新时间:2023-12-03 11:17:46 28 4
gpt4 key购买 nike

我想问一些具体问题。

我正在尝试使用 Google Chrome 扩展程序实现一个应用程序,该应用程序从另一个 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='搜索']/DIV[1]/DIV[@id= 'ires']/OL[@id='rso']/DIV[2]/LI[2]/DIV[1]/DIV[1]/DIV[1]/SPAN[1]

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

<html>
<body>
<div>Hello<\div>
<body>

我有这个元素的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 中的元素,它看起来也不错。

最佳答案

错误的文档。看看Architecture Overview首先。

您的后台脚本位于一个特殊的、不可见的页面中,并且文档引用该页面。

要访问当前选项卡的 DOM,需要注入(inject) content script并在那里执行您的代码。

关于javascript - 在 google chrome 插件 (javascript) 中通过 xpath 获取元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260583/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com