Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

196
Vistas
¿Cómo esperar después de browser.keys () en el modo asincrónico WebdriverIO?

Estoy luchando por hacer algo con async WebdriverIO v7 que en modo de sincronización es bastante fácil.

Contexto: estoy usando un componente de entrada enmascarado de React que tiene un error (no puedo solucionarlo ni cambiar el componente), si escribo demasiado rápido, las teclas no se registran y el cursor va al final, así que necesito escribir a una velocidad relativamente lenta. Cuando uso await input.setValue('test') la escritura es demasiado rápida y solo escribe la primera letra y no puede escribir el resto, por lo que necesito escribir cada carácter por separado y esperar un poco entre pulsaciones de teclas.

Básicamente, quiero hacer esto en modo asíncrono:

 [...textValue].forEach(char => { browser.keys(char); browser.pause(100); });

Intenté usar waitUntil() pero debido a que esta es una entrada enmascarada, si escribo 123456 , el valor en la entrada será 123.456.___-_ por lo que no puedo comparar directamente las dos cadenas y esperar hasta que sean iguales. Además, esto parece mucho trabajo para algo que era tan simple, así que me pregunto si hay una mejor manera .

¡Gracias!

EDITAR: Intenté comparar el texto de entrada guardado hasta ahora en cada navegador. clave browser.key(char) con la entrada real input.getValue() en la waitUntil() y todavía no funciona

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Bien, resolví el problema. El problema era que el bucle forEach no puede esperar las operaciones asíncronas, así que ahora uso un bucle for..of ( referencia ).

 async typeSlowly (input, content) { let inputSoFar = ''; for (const char of content) { inputSoFar = inputSoFar.concat(char); await browser.keys(char); await browser.waitUntil( async () => (await input.getValue()) === inputSoFar, { timeout: 500, timeoutMsg: 'expected text to be different after 500ms' } ); } }

Omití la parte de la lógica de enmascaramiento porque eso es solo un detalle, lo importante aquí es la espera asíncrona dentro del ciclo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda