我在木偶师中使用了木偶师,我不知道为什么当对象不是空的时候,pageFunction会返回一个空对象。下面是一个代码示例:
const puppeteer = require('puppeteer');
(async() => {
  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 1000
  });
  const page = await browser.newPage();
  await page.goto('https://www.google.com/search?q=news');
  const result1 = await page.$eval('#resultStats', elem => elem.textContent)
  console.log('result1', result1);  // returns 'About 2,890,000,000  results (0.45 seconds)'.  This is expected behavior straight from puppeeteer docs
  const result2 = await page.$eval('#resultStats', elem => elem)
  console.log('result2', result2);  // returns and empty object.  Why?  I would have expected to see a DOM Node Object here
  await browser.close();
})();如何将整个元素返回到result2中?
发布于 2017-10-21 01:52:25
我不明白pageFunction函数是在Chromium本身中运行的,所以在第二个返回elem => elem的示例中,它实际上是将一个活动的NodeList集合返回给Puppeteer。
但是将一个实时的NodeList集合从铬返回到傀儡是不可能的,因为puppeteer将数据传递到和从Chromium的方式必须通过JSON.stringify / JSON.parse来串行化。当JSON.stringify在一个活动的NodeList上运行时,我相信它会返回一个空对象。
发布于 2017-11-28 09:05:12
嗯,正如您所说的,当您从评估函数返回dom节点时,above.You可以得到function.But中的dom节点,傀儡操作者将处理您returned.So无法获得的形容词数据。
https://stackoverflow.com/questions/46837401
复制相似问题