Pregunta

Las siguientes instrucciones

Selenium.typeKeys("location", "gmail.com");

escribe la cadena gmailcom en lugar de gmail.com .

¿Qué está pasando allí?

De los comentarios:
Estoy tratando de simular el autocompletado y la única forma de hacerlo actualmente en selenio es combinar type y typeKeys. por ejemplo:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

Ahora mi pregunta es ¿por qué typeKeys no escribe el 'punto' entre gmail.com?

¿Fue útil?

Solución

¿Ha intentado utilizar las funciones de teclas nativas y códigos javascript char ? No pude hacer que un carácter 'punto' funcionara con ellos (char 190), pero conseguí que el decimal (char 110) funcionara bien, y el cuadro de texto tampoco debería tener problemas.

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

Otros consejos

Utilice el método type .

De javadoc para teclas de tipo :

  

este comando puede o no tener   efecto visible, incluso en casos donde   escribir teclas normalmente tendría un   efecto visible

     

...

     

En algunos casos, puede   necesita usar el simple "tipo" mando   para establecer el valor del campo y luego   las " typeKeys " comando para enviar el   eventos de pulsación de tecla correspondientes a lo   acabas de escribir.

Tuvimos problemas similares al usar las teclas tipográficas en selenium python.

Una solución alternativa que pensamos para resolver este problema es usar la combinación de 'type' y 'type_keys'. Como ya sabrá, el tipo no tiene tales problemas.

Hicimos esto en nuestro script de selenium python y funciona bien.

Por ejemplo: Si hay una dirección de correo electrónico para ingresar en un cuadro de texto: test.me@test.me.uk

Entonces haz

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

Tal vez sea una forma muy cruda de hacerlo, pero hizo el trabajo.

Espero que esto ayude a alguien más con un problema similar.

También intente establecer el foco en el elemento antes de escribir en él.

selenium.focus(locator);
selenium.typeKeys(locator, value);

funcionó en mi caso, manejando un tipo de entrada = contraseña.

Suponga que la cadena que se va a escribir usando typeKeys es " abc.xyz.efg " ;. Luego, podemos usar los comandos type y typeKeys para escribir la cadena dada.

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

Los dos pasos anteriores son útiles siempre que desee seleccionar un elemento en el cuadro desplegable, y el menú desplegable solo aparece si usamos el comando typeKeys.

También veo este comportamiento cuando uso Selenium RC (C #), y con diferentes caracteres ('y', por ejemplo, que también parece eliminar el carácter, sígalo desde la acción de escribir ...)

Para algunas situaciones, es completamente posible solucionar el problema escribiendo las teclas con las funciones TypeKeys o KeyPress, pero no he logrado encontrar una solución que funcione cuando desea escribir texto en un campo, ingrese controle los caracteres ([Intro] o una nueva línea, por ejemplo), y luego escriba más texto ... (usando la función 'Tipo' en este caso simplemente sobrescribe el contenido del campo ...).

Si alguien logra encontrar una solución razonable para este problema, agréguelo a esta pregunta, ya que está comenzando a aparecer en Google ahora y probablemente ayudaría a mucha gente. (Comenzaría una recompensa si pudiera ..)

Este es un error abierto en Selenium (error SEL-519 ).

Después de jugar un poco con él, finalmente logré ingresar '.' en un área de texto usando JavaScript. Ejecute algo como window.document.getElementById ('asignado_a'). Valor + = '.' a través de storeEval o similar.

Obtuve el mismo comportamiento, pero lo arreglé pasando una variable al comando Tipo en lugar de una cadena.

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

¡Funciona como un encanto!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top