const puppeteer = require('puppeteer') (async() => { let url = 'https://www.reg.uci.edu/perl/WebSoc' let browser = await puppeteer.launch({headless:false}); let page = await browser.newPage(); await page.goto(url, {waitUntil: 'domcontentloaded'}); await page.select('select[name=Dept]', 'BIO SCI'); await page.click('input[value="Display Web Results"]') await page.waitForNavigation({waitUntil: 'domcontentloaded'}) await page.addScriptTag({path: 'jquery.js'}) var biologyClasses = await page.evaluate( () => { var classes = $( "td:contains('Lec')") classes = classes.not('.Comments') classes = classes.not('.Pct100') classes = Array.from(classes); console.log(classes) // testing to see if classes show up var biology = []; classes.forEach(function(item) { var classCode = window[$(item).closest("tr").find(">:nth-child(1)").text()] classCode = {}; classCode.instructor = $(item).closest("tr").find(">:nth-child(5)").text() biology.push(classCode) }); return biology; }); console.log(biologyClasses) })();Estoy tratando de obtener una lista de clases de biología y devolver una matriz de todas las clases, siendo cada clase un objeto que tiene el instructor de cada clase. Usando headless:false, veo que está navegando correctamente, pero por alguna razón, el código no parece funcionar dentro de page.evaluate() y no devuelve nada.
Cuando copio manualmente exactamente el mismo código page.evaluate() en un navegador Chrome normal que no es de Titiritero, el código parece funcionar y obtengo una matriz adecuada de 60 clases de biología, cada una de las cuales es un objeto con una propiedad de "instructor". . ¿Alguna idea de lo que está fallando al intentar emular estos resultados con Puppeteer?
Por extraño que parezca, la instrucción console.log(classes) dentro de page.evauluate() funciona aleatoriamente a veces (y veo clases registradas en el navegador Puppeteer) pero incluso entonces, no consigo que las clases de biología se registren en el nodo. consola js. ¿Algunas ideas?