Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

366
Vistas
node.js titiritero "el documento no está definido"

Estoy intentando hacer clic en un botón usando un código sin una identificación o clase, pero mi terminal siempre responde con:

 document.getElementsByTagName("Accept Cookies"); ^ ReferenceError: document is not defined

Este es mi código:

 const puppeteer = require('puppeteer'); const product_url = "https://www.nike.com/launch" async function givePage() { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); return page; } async function acceptCookies(page) { await page.goto(product_url); const btn = await page.waitForSelector('#cookie-settings-layout > div > div > div > div:nth-child(3) > div.ncss-col-md-6.ncss-col-sm-12.mb5-sm > button') await btn.click() } async function notifyMe(page) { await page.goto(product_url); document.querySelector("button[type=\"submit\"]").click("Notify Me"); } async function checkout() { var page = await givePage(); await acceptCookies(page); await notifyMe(page); } checkout();

¿Qué hice mal y cómo puedo solucionarlo?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Ya tienes un ejemplo en tu código sobre cómo acceder a los elementos. En lugar de document.querySelector , use page.waitForSelector como lo hizo en la línea 12.

 document.querySelector('button[type="submit"]').click()

debiera ser

 (await page.waitForSelector('button[type="submit"]')).click()
about 4 years ago · Juan Pablo Isaza Denunciar

0

No hay una variable integrada en NodeJS llamada document , ya que no se ejecuta en el navegador.

Si desea acceder al document , en Puppeteer hay una función page.evaluate() donde puede acceder a la variable del document (así como a todo lo demás dentro del JS del lado del cliente):

 // ... await page.evaluate(() => { document.querySelector("button[type=\"submit\"]").click(); });

Sin embargo, tenga en cuenta que todo el JavaScript que ejecute se ejecutará en el navegador, no en NodeJS, por lo que si desea recuperar el valor, puede devolver:

 const result = await page.evaluate(() => { var something = document.getElementById("something"); return something.innerText; }); console.log(result); // will print in the console "blah blah blah"

Del mismo modo, si desea pasar variables a la devolución de llamada, debe dárselas a la función de evaluación:

 await page.evaluate((name, age) => { // do something with 'name' and 'age' }, "John", 34);
about 4 years ago · Juan Pablo Isaza Denunciar

0

En Nodejs, no tiene acceso a las API web como una ventana, un documento, etc., por lo que no puede usar document.querySelector para seleccionar elementos aquí.
En lugar de manejar los clics en los elementos DOM en el lado del servidor, debe manejar esos clics solo en el lado del cliente y luego obtener los datos del servidor en consecuencia.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda