最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Puppeteer innerHTML页面评估返回空错误和未定义错误的函数

网站源码admin14浏览0评论

Puppeteer innerHTML页面评估返回空错误和未定义错误的函数

Puppeteer innerHTML页面评估返回空错误和未定义错误的函数

等待页面。$ eval('。class1'+变量+'img.class2',el => el.ParentElement.innerHTML ='替换文本');

我也尝试过

等待page.evaluate((变量)'.class1'+变量+'img.class2',el => el.ParentElement.innerHTML ='替换文本');

我知道所有包含此函数的if语句都是正确的,并且在检查器中,.class1VARIABLE img.class2选择的.ParentElement返回适当的元素。

但是,当我运行第一个函数时,发现未定义的ParentElement时会出错,而当我运行第二个函数时,会发现找到null的ParentElement时出错。是什么赋予了?我是否无法正确传递变量?我在评估错误的DOM吗? 'variable'做正确的事,在for语句中增加,并且我已经证明在将我带到这里的逻辑中,使用console.log调试语句是正确的。我什至尝试对函数内部的变量进行硬编码,例如

等待page.evaluate(()'.class1VARIABLE img.class2',el => el.ParentElement.innerHTML ='替换文本');

我什至无法理解它将如何失败,并且它也因null或未定义的错误而崩溃。

我的智慧尽在这里,Kinda。

P.S。如果重要,则图像的ParentElement为td。

回答如下:

有关如何使用.class选择器更改元素的innerHTML的示例:

'use strict';

const html = `
  <!doctype html>
  <html>
    <head><meta charset='UTF-8'><title>Test</title></head>
    <body><p class='test'>Text.</p></body>
  </html>`;

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({ headless: false });
    const [page] = await browser.pages();

    await page.goto(`data:text/html,${html}`);

    const pSelector = '.test';
    const newHTML = '<i>New text.</i>';

    await page.evaluate((selector, html) => {
      document.querySelector(selector).parentElement.innerHTML = html;
    }, pSelector, newHTML);
  } catch (err) {
    console.error(err);
  }
})();
发布评论

评论列表(0)

  1. 暂无评论