Usando puppeteer , tengo una página específica que estoy raspando la web en busca de datos y haciendo capturas de pantalla para probar que los datos son correctos. La propia página web incluye un botón para crear una versión imprimible de la página. El botón en sí se implementa como una entrada de tipo button sin atributo de target . Aún así, una vez que se hace clic, el botón abre la versión para imprimir en una nueva página (pestaña) en about:blank que abre automáticamente el cuadro de diálogo de impresión de Chrome.
Cada vez que se abre una nueva página, generalmente hago browser.waitForTarget() para intentar capturar el nuevo objetivo y trabajar desde allí. El problema es que con cualquier variación de código, nunca puedo encontrar una Page que coincida con la página que se abrió. Lo más cerca que estoy es encontrar un Target de tipo other y una url de chrome://print .
¿Hay alguna manera de encontrar este tipo de objetivo fácilmente y aún más obtener su página (dado que target.page() solo devuelve una página si target.type() === 'page' ? Como beneficio adicional, me gustaría una forma de descartar o ignorar potencialmente el cuadro de diálogo de impresión de la ventana, posiblemente incluso cancelar.
Debe hacer lo siguiente para capturar una nueva ventana del navegador:
const browser = await puppeteer.launch({ headless: false, }); const page = await browser.newPage(); let page1; browser.on("targetcreated", async (target) => { if (target.type() === "page") { page1 = await target.page(); } }); O puede encontrar la página deseada usando el método browser.pages() . Consulte la documentación para obtener más información.