Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

360
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!