Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

404
Visualizações
depuración en cromo / titiritero no completa el script de evaluación

Así que tengo el siguiente código de lanzamiento

 this.browser = await puppeteer.launch( { headless: false, devtools: true, slowMo: 200}); this.page = await this.browser.newPage(); await this.page.goto(pageUrl); let result = await this.page.evaluate(() => { const labels = document.querySelectorAll("li.product-item"); let productList = []; for(let product of labels) { productList.push(product); } debugger; //filter only product stacks that have a price const productStacks = productList.filter(product => product.querySelector("span.price-wrapper") !== null); let results = productStacks.map(product => { return product.querySelector("span.price-wrapper").getAttribute("data-price-amount"); }); return results; });

Entonces, Chrome se inicia y se detiene en el código apropiado (lo mejor que puedo decir), incluso puedo ver las variables locales poblarse con el resultado esperado y recorrer el código, sin embargo, el archivo abierto puppeteer_e Evaluation_script no se llena con el script de evaluación y Se queda con el contenido, por lo que estoy paso a paso a ciegas.

 //# sourceURL=__puppeteer_evaluation_script__

Ocasionalmente, después de muchos minutos, a veces se llena con el código. No tengo idea de qué está mal, he intentado actualizar los últimos lts de nodo y titiritero pero tengo el mismo comportamiento.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No sé qué causa este problema, pero aquí hay un par de posibles soluciones.

Para evitar conseguir:

//# sourceURL=__puppeteer_evaluation_script__

Puedes exponer una función:

 const puppeteer = require('puppeteer'); var browser = null; var page = null; (async () => { browser = await puppeteer.launch( { headless: false, devtools: true, }); page = await browser.newPage(); await page.goto("https://google.com/"); // Expose a function page.exposeFunction("nothing", () => null); await page.evaluate(async function() { debugger; console.log("Do task"); }); })();

En caso de que eso falle en el futuro. Hice un envoltorio para usar eval() ya que la fuente aparece usando eso. Funciona tanto con funciones de sincronización como asíncronas y admite el paso de argumentos y la devolución de valores.

 function evaluateFixed(page, realFunction) { return page.evaluate(async function(realFunction, args) { var func = eval(`(${realFunction})`); if(func.constructor.name === "AsyncFunction") return await func(...args); else return func(...args); }, realFunction.toString(), Array.from(arguments).slice(2)); } (async () => { browser = await puppeteer.launch( { headless: false, devtools: true, }); page = await browser.newPage(); await page.goto("https://google.com/"); console.log("Doing test"); let res = await evaluateFixed(page, async function(x, y, z) { debugger; console.log("Do task", x, y, z); function sleep(amount) { return new Promise((resolve) => setTimeout(resolve, amount)); } for(let i = 0; i < 10; i++) { console.log("on seconds", i); await sleep(1000); } return { "fee": "foo" }; }, 1, "two", { "three": 3}); console.log("Res 1", res); res = await evaluateFixed(page, () => { debugger; return 1 + 2; }); console.log("Res 2", res); })();
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda