Javascript Evaluation failed: ReferenceError: parameter is not defined

Javascript Evaluation failed: ReferenceError: parameter is not defined

我在javascript中写一个函数:

const getContent = async (page, element) => {
  const contentStr = await page.evaluate(() => {
    const contentEl = document.querySelector(element);
    const content = contentEl?.getAttribute("content");

    if (content != null && content.length > 0) {
      return content;
    } else {
      return null;
    }
  });
  return contentStr;
};

执行此函数时出现错误:

Error: Evaluation failed: ReferenceError: element is not defined

有人能帮忙吗?

这是puppeteer的函数签名page.evaluate

page.evaluate(pageFunction[, ...args])

如您所见,您可以在调用 page.evaluate 时将参数作为附加参数传递给 pageFunction。这是必要的原因是因为一个执行上下文是 node js 而另一个是 chromium 浏览器和这些上下文 运行 在不同的进程中并且不共享内存,除非你通过 puppeteer 传递变量 api.

所以在你的情况下这可能有效(未测试):

const getContent = async (page, element) => {
  const contentStr = await page.evaluate((element) => {
    const contentEl = document.querySelector(element);
    const content = contentEl?.getAttribute("content");

    if (content != null && content.length > 0) {
      return content;
    } else {
      return null;
    }
  },element);
  return contentStr;
};