Question

L'instruction suivante

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

tape la chaîne gmailcom au lieu de gmail.com .

Que se passe-t-il là-bas?

D'après les commentaires:
J'essaie de simuler le remplissage automatique et la seule façon de le faire actuellement sur sélénium est de combiner le type et le typeKeys. par exemple:

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

Maintenant, ma question est de savoir pourquoi typeKeys ne tape pas le "point" entre gmail.com?

Était-ce utile?

La solution

Avez-vous essayé d'utiliser les fonctions de clé native et codes de caractère javascript ? Je ne pouvais pas utiliser un caractère "Point" avec eux (caractère 190), mais la décimale (caractère 110) fonctionnait parfaitement, et la zone de texte ne devrait pas poser de problème.

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

Autres conseils

Utilisez la méthode type .

Extrait du javadoc pour les clés de type :

  

cette commande peut avoir ou ne pas avoir de   effet visible, même dans les cas où   les touches de frappe auraient normalement un   effet visible

     

...

     

Dans certains cas, vous pouvez   besoin d'utiliser le type " simple " commander   pour définir la valeur du champ, puis   les "typeKeys" commande d'envoyer le   événements de frappe correspondant à quoi   vous venez de taper.

Nous avons eu des problèmes similaires lors de l’utilisation de typekeys en sélénium python.

Une solution de contournement que nous avons envisagée pour résoudre ce problème consiste à utiliser la combinaison de "type" et "type_keys". Comme vous le savez peut-être, taper n'a pas de tels problèmes.

Nous l'avons fait dans notre script sélénium python et cela fonctionne très bien.

Par exemple: Si une adresse électronique doit être entrée dans une zone de texte: test.me@test.me.uk

Puis faites

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

Peut-être une façon très grossière de le faire, mais cela a fait le travail.

J'espère que cela aidera quelqu'un d'autre avec un problème similaire.

Essayez également de définir le focus sur l'élément avant d'écrire dessus.

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

cela a fonctionné dans mon cas, avec un type d'entrée = mot de passe.

Supposons que la chaîne à taper à l'aide de typeKeys soit "abc.xyz.efg". Ensuite, nous pouvons utiliser les commandes type et typeKeys pour écrire la chaîne donnée.

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

Les deux étapes ci-dessus sont utiles chaque fois que vous souhaitez sélectionner un élément dans la liste déroulante, et la liste déroulante ne s'affiche que si nous utilisons la commande typeKeys.

Je constate également ce comportement lors de l'utilisation de Selenium RC (C #) et de caractères différents ("y", par exemple, qui semble également supprimer le caractère qui le suit de l'action de frappe ...)

Dans certaines situations, il est tout à fait possible de contourner le problème en tapant les clés avec les fonctions TypeKeys ou KeyPress, mais je n’ai pas réussi à trouver une solution qui fonctionne lorsque vous voulez taper du texte dans un champ, entrez caractères de contrôle ([Entrée] ou une nouvelle ligne par exemple), puis tapez plus de texte .. (la fonction "Type" dans ce cas écrase simplement le contenu du champ ...).

Si quelqu'un parvient à trouver une solution raisonnable à ce problème, veuillez l'ajouter à cette question car elle commence à apparaître dans Google maintenant et aiderait probablement beaucoup de gens à sortir .. (Je commencerais une prime si je pouvais ..)

Il s'agit d'un bogue ouvert dans Selenium (bogue SEL-519 ).

Après quelques manipulations, j’ai finalement réussi à entrer "." dans une zone de texte en utilisant JavaScript. Exécutez quelque chose comme window.document.getElementById ('assigné_à'). Valeur + = '.' via storeEval ou similaire.

J'ai eu le même comportement, mais je l'ai corrigé en passant une variable à la commande Type au lieu d'une chaîne.

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

Cela fonctionne comme un charme!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top