• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

454
Views
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).

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

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

 let button = await page.waitForSelector(`button[data-bind*="loadingButton"]`) await button.click()
almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error