Estoy ejecutando una prueba llamada crear administrador. La prueba primero creará un administrador, luego verificará si el administrador se creó correctamente.
En el script, tengo una parte del código en la que quiero esperar 3 segundos antes de continuar porque cada vez que se hace clic en el botón Enviar, el sitio web necesitará 3 segundos para actualizar la tabla de administración (lista de información del usuario) después de que se haya realizado la navegación. . Para obtener más información, esta actualización no es una navegación y, por lo tanto, mi 'waitForNavigation()' no funciona.
Por lo tanto, el proceso será como: 'completar el formulario' > 'hacer clic en el botón enviar' > 'esperar navegación' > 'recargar tabla de usuario (3s).
Si no espero 3 segundos para que la tabla se actualice, la prueba arrojará un error porque el usuario registrado no se encontrará en la tabla (tengo otras secuencias de comandos para encontrar al usuario).
Así es como se ve la navegación cuando se hace clic en el botón "Guardar":
Después de eso, la tabla tarda 3 segundos en actualizarse y se ve así:
Puede envolver setTimeout
como Promise
y usarlo dentro de funciones asíncronas:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
donde ms
- retraso en milisegundos que quieres esperar.
Uso en su código:
... await page.click('button :text-is("Save")'); await delay(3000); // <-- here we wait 3s return username;
Use setTimeout
para hacer eso. aquí hay un ejemplo
function delayedCheck() { const processComplete = true; // set the right boolean here if ( processComplete ) { // Do something } else { setTimeout(delayedCheck, 3000); // try again in 3 seconds } } delayedCheck();