Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

189
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!