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