12
votes

Comment puis-je envoyer des accords clés à la zone de texte avec sélénium?

Je voudrais simuler un utilisateur en appuyant sur Maj-entrer dans une zone de texte. Voici le code que je travaille avec: xxx pré>

si je veux simuler appuyer sur le bouton ENTER, je peux dire P>

textarea.SendKeys(Keys.Enter);


0 commentaires

5 Réponses :


28
votes

Plus simple que prévu. Puisque SendKeys prend une chaîne et que les constantes statiques des clés sont toutes des cordes, elles peuvent simplement être concaténées ensemble comme ceci:

textarea.SendKeys(Keys.Shift + Keys.Enter);


4 commentaires

Heureux cela a fonctionné pour vous. Malheureusement, cela ne fonctionne pas pour moi dans IE9 ou Chrome: .SendKeys (keys.control + "a"); toutes suggestions?


J'ai eu un succès limité à obtenir le sélénium pour travailler du tout dans IE. Je regarderais dans les paramètres de sécurité de votre navigateur pour voir s'il y a quelque chose à empêcher le sélénium de contrôler complètement le navigateur.


@BretveSenstra, essayez d'utiliser .SendKeys (Keys.Control + "A"); au lieu de .SendKeys (Keys.Control + "A");


Essayez webelement.sendkeys (clés.leftcontrol + "a");



-3
votes

en Java, nous avons Méthode , cette méthode enverra une séquence de touches ensemble: xxx

ou xxx


0 commentaires

0
votes

S'il y a quelque chose que vous pourriez faire encore et encore, cela vaut peut-être la peine de faire une méthode d'extension. Je l'ai fait depuis .clear () ne fonctionne pas dans notre application Web pour une raison quelconque. Au lieu d'envoyer toujours un Ctrl + A et \ b , je viens de l'étendre avec ceci: xxx

puis je viens d'appeler DYNEL.BLANK (); et cela fonctionne bien.


1 commentaires

Merci pour cette idée. Je l'ai modifié pour renvoyer l'élément afin de la chaîner ensemble les commandes. [Élément] .Clearfield (). SendKeys ("titre")



1
votes

Pour moi, sur C # uniquement cette variation fonctionne:

actions.KeyDown(Keys.Control);
actions.SendKeys("a");
actions.KeyUp(Keys.Control);


0 commentaires

0
votes

Voici comment Keys.Chord () est implémentée dans JavaScript: https: // github. com / seleniumHQ / selenium / blob / d8ddddb4d83972df0f565ef65264bcb733e7a94584 / JavaScript / selenium-webdiver / lib / entré.js # L135

qui est déjà assez proche de la meilleure réponse acceptée, je pense que la seule différence est le personnage null ajouté à la fin. Vous pouvez probablement faire une méthode d'assistance pour vous aider à vous rappeler, mais malheureusement openqa.selenium.keys est une classe statique et toutes les propriétés de retour des propriétés. Donc, si vous vouliez faire une belle enveloppe autour de celle-ci, vous devrez probablement également envelopper la classe des touches.


0 commentaires