Puppeteer: tracing.start, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 ΠΎΠΊΡ‚. 2017  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: puppeteer/puppeteer

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ трассировки с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ создаСт trace.json, Π½ΠΎ Π½Π΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹.

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.tracing.start({screenshots: true, path: 'trace.json'});  
  await page.goto('https://www.google.com');
  await page.tracing.stop();  
  await browser.close();
})();

Каков ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡˆΠΊΠ°Π»Ρ‹ вмСстС с trace.json

Π§Ρ‚ΠΎ происходит вмСсто этого?

  • Π’Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ trace.json. Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ Π½Π΅ выводятся.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅

  • ВСрсия ΠΊΡƒΠΊΠ»ΠΎΠ²ΠΎΠ΄Π°: 0.12.0
  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°/вСрсия ОБ: Mac OSX 10.13
  • URL-адрСса (Ссли ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ): google.com

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ снимки экрана трассировки, этот быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ @Everettss Π² выпускС 1368 , ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня.

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.tracing.start({ screenshots: true, path: 'trace.json' });
  await page.goto('https://www.google.com', { timeout: 60000 });
  await page.tracing.stop();

  // --- extracting data from trace.json ---
  const tracing = JSON.parse(fs.readFileSync('./trace.json', 'utf8'));
  const traceScreenshots = tracing.traceEvents.filter(x => (
      x.cat === 'disabled-by-default-devtools.screenshot' &&
      x.name === 'Screenshot' &&
      typeof x.args !== 'undefined' &&
      typeof x.args.snapshot !== 'undefined'
  ));
  traceScreenshots.forEach(function(snap, index) {
    fs.writeFile('trace-screenshot-'+index+'.png', snap.args.snapshot, 'base64', function(err) {
      if (err) {
        console.log('writeFile error', err);
      }
    });
  });
  // --- end extracting data from trace.json ---

  await page.close();
})();

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ @kesava встроСны Π² трассировку: ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» trace.json Π½Π° панСль ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ devtools.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ снимки экрана трассировки, этот быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ @Everettss Π² выпускС 1368 , ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня.

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.tracing.start({ screenshots: true, path: 'trace.json' });
  await page.goto('https://www.google.com', { timeout: 60000 });
  await page.tracing.stop();

  // --- extracting data from trace.json ---
  const tracing = JSON.parse(fs.readFileSync('./trace.json', 'utf8'));
  const traceScreenshots = tracing.traceEvents.filter(x => (
      x.cat === 'disabled-by-default-devtools.screenshot' &&
      x.name === 'Screenshot' &&
      typeof x.args !== 'undefined' &&
      typeof x.args.snapshot !== 'undefined'
  ));
  traceScreenshots.forEach(function(snap, index) {
    fs.writeFile('trace-screenshot-'+index+'.png', snap.args.snapshot, 'base64', function(err) {
      if (err) {
        console.log('writeFile error', err);
      }
    });
  });
  // --- end extracting data from trace.json ---

  await page.close();
})();

@QmarkC Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρ…Ρ€ΠΎΠΌ ΠΏΠ°Π΄Π°Π΅Ρ‚.
Как я ΠΌΠΎΠ³Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ Π·Π½Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ…Ρ€ΠΎΠΌ разбился?

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ