首页 > 解决方案 > Puppeteer:在相同的选择器中替换 innerHTML

问题描述

使用puppeteer截屏时,需要使用类的动态元素.menu__link将 innerHTML 更改为存根。

我使用BackstopJs puppet/onReady.js

当我尝试这个时,只有页面上的第一个元素被替换:

module.exports = async (page) => {
    const myLocalValue = "Test";
    const tweets = await page.$$('.menu__link');


    for (const tweet of tweets) {
        await page.$eval('.menu__link', (el, value) => el.innerHTML = value, myLocalValue)
    }
};

这段代码根本不起作用:

module.exports = async (page) => {
    const myLocalValue = "Test";
    const tweets = await page.$$('.menu__link');


    for (const tweet of tweets) {
        await page.$eval(tweet, (el, value) => el.innerHTML = value, myLocalValue)
    }
};

请告诉我如何为所有使用 puppeteer 的人替换整个页面上的innerHTML.menu__link

标签: javascriptnode.jspuppeteer

解决方案


您可以使用$$eval

await page.$$eval('. menu__link', (links, value) => links.forEach(el => el.innerHTML = value), 'myLocalValue');

推荐阅读