рдореИрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЯреНрд░реЗрд╕.рдЬреЗрд╕рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдирд╣реАрдВред
(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();
})();
рдкрд░рд┐рдгрд╛рдо рдХреА рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ?
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
@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 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдореИрдВ рдЬрд╛рди рд╕рдХреВрдВ рдХрд┐ рдХреНрд░реЛрдо рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрджрд┐ рдЖрдк рдЯреНрд░реЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг @Everettss рдЙрджрд╛рд╣рд░рдг 1368 рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред