Search code examples
node.jsautomated-testspuppeteerdevtools

Puppeteer Devtools Programaticaly


I can open the devtools that exist in Puppeteer, but I cannot write data to the console section and export the log of this data to the cmd screen?

In Puppeteer, I want to print to console as below and get the output below.

Screenshot


Solution

  • You are asking for two things here

    1. Capture console.log messages to the command prompt
    2. Run a javascript command inside puppeteer

    For the first point you can set the option dumpio: true as a option

    For the second point you can jump into the page using evaluate and make a call to console.log

        const puppeteer = require('puppeteer');
    
        (async () => {
          const browser = await puppeteer.launch({
            dumpio: true
          });
          const page = await browser.newPage();
    
          const url = "https://stackoverflow.com";
          await page.goto(url);
    
          await page.waitFor('h1');
    
          await page.evaluate(() => {
            console.log(document.getElementsByTagName("h1")[0].innerText);
          });
    
          console.log("Done.")
          await browser.close();
    
        })();  
    
    

    Also for brevity if you are getting to much output you can omit dumpio and instead catch the log as an event e.g.

      page.on('console', (msg) => console[msg._type]('PAGE LOG:', msg._text));
    
      await page.waitFor('h1');
    
      await page.evaluate(() => {
        console.log(1 + 2);
        console.log(document.getElementsByTagName("h1")[0].innerText);
      });
    

    the second script returns

    PAGE LOG: 3
    PAGE LOG: We <3 people who code
    Done.