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

581
Vistas
Javascript/HTML/Puppeteer: ¿cómo acceder a los valores del atributo data-bind (para hacer clic en un botón)?

Actualmente estoy usando Titiritero para hacer clic en un botón en una página. El problema al que me enfrento es que el elemento seleccionado para hacer clic carga el botón durante un cierto período de tiempo que supongo que es arbitrario para mi conexión a Internet o quizás incluso parámetros adicionales (así que incluso si uso el método waitForSelector() , el botón no se podrá hacer clic aunque el elemento esté presente, porque aún se está cargando).

Podría agregar una function waitFunc(seconds) pero el script se interrumpirá si el tiempo de carga del botón es superior al tiempo de waitFunc(5) (por lo que no siempre funcionará, a menos que el tiempo de espera sea arbitrariamente lo suficientemente largo, pero luego desafía el propósito de tener el guión). Mi requisito sería hacer clic en el botón tan pronto como se haya cargado. ¿Cómo podemos hacer esto?

En la etiqueta del botón a continuación, veo que hay loadingButton en data-bind . Anticipo que podría devolver un valor booleano. Sin embargo, ¿cómo puedo acceder a estos datos con Titiritero y crear una función para hacer clic en este botón una vez cargado?

 < button type="submit" data-bind=" buttonText: 'ClickMe', click: clickMe, loadingButton: loading, enable: canClickMe" class="btn-class" > Click Me! </button>

Investigué un poco sobre Knockout, pero no lo entiendo lo suficiente como para manipular esta herramienta. Me imagino que una vez que logré obtener el valor de loadingButton , puedo usar un bucle while para hacer clic en el botón una vez que cambió su valor.

const attr = await page.$eval(selectors.buyNow, el => el.map(x => x.getAttribute("data-bind"))) , pero el valor devuelto es la cadena "buttonText: 'ClickMe', click: clickMe, loadingButton: loading, enable: canClickMe" (literalmente lo que está en el atributo data-bind la etiqueta del botón HTML).

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

0

Entonces, ¿quieres hacer clic en ese botón? Qué tal si:

 let button = await page.waitForSelector(`button[data-bind*="loadingButton"]`) await button.click()
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