Timm Nicolaizik
Timm Nicolaizik

Reputation: 421

page.evaluate() - document is undefined when returning it back to Node

I tried to get the Document of a Website with Puppetter but somehow page.evaluate doesnt work the way i thought.

  let browser = await puppeteer.launch({headless:true});
  let page = await browser.newPage();
  await page.setViewport({
    width: 1920,
    height: 1080
  })
  await page.goto('https://www.tradingview.com/chart/');

  const doc = await page.evaluate(() => {
    return document;
  });
  
  console.log(doc) 

When i print doc it prints undefined

Upvotes: 4

Views: 1602

Answers (1)

vsemozhebuty
vsemozhebuty

Reputation: 13822

Unfortunately, page.evaluate() can only transfer serializable values (roughly, the values JSON can handle). As document returns a DOM element that is not serializable (it contains methods and circular references), it is replaced with undefined. You need to return either serializable value (for example, document.body.innerText) or use something like page.evaluateHandle() and JSHandle API.

Upvotes: 5

Related Questions