El registro en el sitio consta de tres etapas. El primer paso es proporcionar un nombre, dirección de correo electrónico. Cuando envía el formulario del primer paso, se le redirige al segundo paso (confirmación por correo electrónico). La URL cambia en el navegador y el correo electrónico de confirmación se envía al correo. Para implementar el autotest, decidimos que siempre registraríamos la misma dirección de correo electrónico. Para la confirmación en la solicitud de este correo electrónico, recibirá un enlace de confirmación. Ejemplo de código a continuación.
await page.click(btnSignUp) const [response] = await Promise.all([ page.waitForResponse((response) =>response.url()===apiURL+'/register'), {timeout: 30 * 1000} ]) const responseData = await response.json()Después de hacer clic en el botón "Registrarse", veo la siguiente página (confirmar correo electrónico), pero no puedo obtener una respuesta a la solicitud. Veo la respuesta en la terminal al realizar una autoprueba. Pero recibí el error " TimeoutError: se excedió el tiempo de espera mientras se esperaba el evento " ¿Cuál es el problema? Ayúdenme a resolverlo, por favor.
Adjunto fragmento de código. Puede usar eso y modificarlo de acuerdo con su escenario. Ayuda a lidiar con problemas relacionados con errores de tiempo de espera.
const puppeteer = require("puppeteer"); const { scrollPageToBottom } = require('puppeteer-autoscroll-down') async function scrape () { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); await page.goto("https://twitter.com/elonmusk", {waitUntil: "networkidle2"}); let isLoadingAvailable = true // Your condition-to-stop while (isLoadingAvailable) { try{ await scrollPageToBottom(page, { size: 250 , delay: 500}) await page.waitForResponse( response => response.url() === 'https://twitter.com/elonmusk' && response.status() === 200 ) } catch (ex) { continue; } isLoadingAvailable = false // Update your condition-to-stop value } console.log("Loading done") await browser.close(); }; scrape();