javascript - Titiritero - Haga clic en el botón sin ID de entrada

CorePress2024-01-25  13

Con Puppeteer, logro hacer clic en el botón :

<input id="signInSubmit" tabindex="5" class="a-button-input" type="submit" aria-labelledby="a-autoid-0-announce">

Con el código:

await page.click('#signInSubmit')

Pero después hay otro botón para hacer clic, pero este no tiene "identificación de entrada":

<span id="drrGenerateReportButton" class="a-button a-button-primary a-declarative">
   <span class="a-button-inner"><input class="a-button-input" type="submit" aria-labelledby="drrGenerateReportButton-announce">
      <span id="drrGenerateReportButton-announce" class="a-button-text" aria-hidden="true">Générer le rapport</span>
   </span>
</span>

Probé el código:

await page.click('#drrGenerateReportButton')

y

await page.click('.a-button-input')

y

await page.click('.a-button.a-button-primary.a-declarative')

y

await page.click('#drrGenerateReportButton-announce')

¿Alguien tiene una solución, por favor?

Al usar un selector de clases, se hará clic en el primer elemento satisfactorio. ¿Es esta la primera vez que aparece en su página?

- Ali Sheikhpour

28/03/2021 a las 17:01

2

esperar página.click('span[id="drrGenerateReportButton-announce"]'));

- Shankar Regmi

28/03/2021 a las 19:10



------------------------------------

A veces los elementos DOM no se montan correctamente y la llamada click() puede dispararse demasiado rápido.

await page.waitForSelector('span[id="drrGenerateReportButton-announce"]');
await page.click('span[id="drrGenerateReportButton-announce"]');

Puppeteer tiene un tiempo de espera predeterminado para que las esperas se agoten ~ 30 segundos Puedes cambiarlo usando page.setDefaultTimeout (timeOutinMilliSeconds)



------------------------------------

El código de Shankar Regmi (¡gracias!):

esperar página.waitForSelector('span[id="drrGenerateReportButton-announce"]'); await page.click('span[id="drrGenerateReportButton-announce"]');

resolvió el problema.

Compartir Seguir Respondido

29 de marzo de 2021 a las 12:49

romano

romano

3

1

1 insignia de bronce

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare