Nodejs / Puppeteer-如何使用page.evaluate

时间:2018-08-27 19:37:02

标签: node.js puppeteer

我知道这是一个菜鸟问题,但是我想知道何时使用page.evaluate

我也知道文档存在,但我仍然不明白

有人用木偶创建刮板时,有人可以解释如何以及何时使用此功能吗?

1 个答案:

答案 0 :(得分:2)

首先,重要的是要了解有两个主要环境:

  • Node.js(木偶)环境
  • 页面DOM环境

当您试图通过传递函数并返回< page.evaluate() < {{来寻求直接在页面DOM环境中与页面交互时,请使用Promise 3}} >>解析为所传递函数的返回值。

否则,如果您不使用page.evaluate(),那么您将在Node.js(Puppeteer)环境中将元素作为Serializable对象来处理。

用法示例:

const example = await page.evaluate( () =>
{
    const elements = document.getElementsByClassName( 'example' );
    const result = [];

    document.title = 'New Title';

    for ( let i = 0; i < elements.length; i++ )
    {
        result.push( elements[i].textContent );
    }

    return JSON.stringify( result );
});

请参见下面的简化图:

ElementHandle

相关问题