Me encontré con un problema que querySelector()
devuelve null
para un elemento que existe en la página. Busqué el flujo de stackover para obtener algunas respuestas, probé:
waitForSelector() & page.setUserAgent(UserAgent)
Cuando ejecuté manualmente el script document.querySelector('span.s-item__price')
en la consola de Chrome, devolvió lo que esperaba, pero no cuando probé con titiritero.
const puppeteer = require('puppeteer'); async function openBrowser(url, callback) { const browser = await puppeteer.launch({ headless: true, defaultViewport: { width: 1920, height: 1080 } }); const page = await browser.newPage(); await page.goto(`${url}`); await callback(page); await browser.close(); } openBrowser('https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=men+watch&_sacat=0', async (page) => { const products = await page.evaluate(() => { let resultArray = []; const productsArray = [...document.querySelectorAll('li.s-item.s-item__pl-on-bottom')]; for (let i = 1; i < productsArray.length; i++) { resultArray.push({ id: i, title: productsArray[i].querySelector('h3.s-item__title').textContent, img: productsArray[i].querySelector('img.s-item__image-img').src, price: productsArray[i].querySelector('span.s-item__price').textContent, // seller: productsArray[i].querySelector('.s-item__seller-info-text').textContent THIS ONE FAILS, TOP ONES WORK FINE. }); } return resultArray; }); console.log(products); });