2017-10-10 4 views
0

Je veux fermer les pages lorsque les marionnettistes sont confrontés à une erreur, parfois page la page que j'essaie de charger les plantages et il n'appelle pas .close();Chrome marionnetteur Fermer la page sur l'événement d'erreur

(async() => { 
const page = await browser.newPage(); 
await page.setViewport({width: resWidth, height: resHeight}); 
await page.goto(d["entities"]["urls"][0]["expanded_url"], {timeout :90000}); 
await page.screenshot({path: './resimdata/'+d['id']+'.png' ,fullPage: true}); 
await page.close(); 
})(); 

Répondre

0

Il y a un problème/PR sur le rapport de marionnettiste concernant ce qui sera utile dans une situation similaire.

lien d'émission connexes: https://github.com/GoogleChrome/puppeteer/issues/952

Pendant ce temps, vous pouvez essayer ce petit hack, si le PR est là sur la version 0.12+, nous n'avons pas à se soucier du code suivant.

(async() => { 
    const browser = await puppeteer.launch({headless: false}); 
    const page = await browser.newPage(); 

    function handleClose(msg){ 
     console.log(msg); 
     page.close(); 
     browser.close(); 
     process.exit(1); 
    } 

    process.on("uncaughtException",() => { 
     handleClose(`I crashed`); 
    }); 

    process.on("unhandledRejection",() => { 
     handleClose(`I was rejected`); 
    }); 

    await page.goto("chrome://crash"); 

})(); 

qui quelque chose de sortie comme suit,

▶ node app/app.js 
I was rejected