2017-08-21 7 views
2

donc je veux prendre une capture d'écran spécifique class plusieurs fois, mais tout le temps il dirait Session Closed ou Terminated, donc j'ai travaillé autour de l'implémentation de plusieurs captures d'écran en ouvrant plusieurs instances.Marionnettiste: captures d'écran multiples dans une instance de navigateur

Est-ce que quelqu'un pourrait au moins guider la façon de plusieurs instances sur la même instance de navigateur?

my code:

const puppeteer = require("puppeteer"); 
 

 
const SELECTOR = ".octicon"; 
 

 
(async() => { 
 
    let screenshotNumber = 0; 
 
    async function screenshots() { 
 
    const browser = await puppeteer.launch({ 
 
     headless: true 
 
    }); 
 

 
    try { 
 
     let page = await browser.newPage(); 
 
     page.setViewport({ width: 1000, height: 600, deviceScaleFactor: 2 }); 
 

 
     await page.goto("https://github.com/"); 
 
     await page.waitForNavigation({ waitUntil: "networkidle" }); 
 

 
     const rect = await page.evaluate(selector => { 
 
     const element = document.querySelector(selector); 
 
     const { x, y, width, height } = element.getBoundingClientRect(); 
 
     return { left: x, top: y, width, height, id: element.id }; 
 
     }, SELECTOR); 
 

 
     await page.screenshot({ 
 
     path: `octicon-${screenshotNumber}.jpg`, 
 
     clip: { 
 
      x: rect.left, 
 
      y: rect.top, 
 
      width: rect.width, 
 
      height: rect.height 
 
     } 
 
     }); 
 

 
     browser.close(); 
 
     screenshotNumber++; 
 
    } catch (e) { 
 
     console.log(e); 
 
     browser.close(); 
 
    } 
 
    } 
 

 
    async function run() { 
 
    await screenshots(); 
 
    setTimeout(run, 200); 
 
    } 
 

 
    run(); 
 
})();

Répondre

0

Il suffit de faire tourner deux commandes consécutives capture d'écran sans faire appel browser.close() fonctionne très bien:

await page.screenshot({ 
    path: `octicon-${screenshotNumber}.jpg`, 
    clip: { 
     x: rect.left, 
     y: rect.top, 
     width: rect.width, 
     height: rect.height 
    } 
    }); 

    screenshotNumber++; 

    await page.screenshot({ 
    path: `octicon-${screenshotNumber}.jpg`, 
    clip: { 
     x: rect.left, 
     y: rect.top, 
     width: rect.width, 
     height: rect.height 
    } 
    }); 

    browser.close();