1

J'essaye d'envoyer un caractère spécial à une zone de texte en utilisant la méthode SendKeys dans Internet Explorer 11. Je n'ai pas eu ce problème en essayant d'envoyer des caractères spéciaux dans d'autres navigateurs, mais Internet Explorer envoie des caractères complètement différents lorsque vous essayez d'envoyer des caractères spéciaux.Envoyer un caractère spécial '@' avec SendKeys à IE 11

La plupart des caractères spéciaux fonctionnent (par exemple! #() $% & /) mais les caractères comme @ {} § ne fonctionnent pas, et à la place de ces caractères, quelque chose comme vbnm est écrit dans la zone de texte. Ces lettres représentent les clés avec lesquelles les signes spéciaux sont créés en combinaison avec la touche Alt Gr (par exemple Alt Gr + v = @, Alt Gr + b = {, Alt Gr + n =}, Alt Gr + m = §).

J'ai essayé d'utiliser l'objet Action pour envoyer les clés avec la méthode KeyDown, mais il a également échoué, en essayant d'écrire une chaîne avec '@' (eg [email protected]) le signe spécial est remplacé par la lettre 'v' (usernamevmail.com). J'ai également essayé d'utiliser l'équivalent ASCII du signe '@' mais au lieu du caractère spécial, j'ai placé le texte '64' dans la zone de texte.

private static string UserName 
    { 
     get { return Browser.GetSingleElement(Login.txtUserName).GetAttribute("value"); } 
     set 
     { 
      if (value == null) return; 
      var domElement = Browser.GetSingleElement(Login.txtUserName); 
      Actions action = new Actions(Browser._driver); 
      action.MoveToElement(domElement); 
      action.Perform(); 
      domElement.Clear(); 
      action.KeyDown(Keys.LeftAlt); 
      action.Perform(); 
      action.SendKeys(Keys.NumberPad6); 
      action.SendKeys(Keys.NumberPad4); 
      action.Perform(); 
      //action.MoveToElement(Browser.GetSingleElement(Login.txtUserName)).Click().KeyDown(Keys.LeftAlt).SendKeys("64").Perform(); 
      if (!Browser.SendKeys(Browser.GetSingleElement(Login.txtUserName), "@{}§~$%&()=")) 
       throw new Exception("Failed to send keys on Login.txtUserName DOM element."); 
     } 
    } 

Lors de l'envoi "@ {} ~ § $% &() =" chaîne à la zone de texte que je reçois cela comme une sortie.

Username output when sending "@{}§~$%&()=" string to the textbox

+1

Avez-vous essayé d'utiliser WebUtility.HtmlDecode (chaîne texte)? – IamBatman

+1

@IamBatman viens de l'essayer maintenant, ça marche, merci pour ton commentaire –

+0

De rien. Content que cela ait aidé. – IamBatman

Répondre

1
string a = "@{}§~$%&()="; 
string b = WebUtility.HtmlDecode(a); 
+0

S'il vous plaît pourriez-vous décrire la solution plus en détail? J'ai rencontré un problème similaire, et dans mon cas ce que je vois est 'a == b' quand je cours votre code. –

+0

https://msdn.microsoft.com/fr-fr/library/system.net.webutility.htmldecode%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 –

+0

Eh bien, merci beaucoup pour la documentation , J'étais au courant de cela. Je m'intéressais à la façon dont cette méthode devrait s'intégrer dans ce cas d'utilisation, où devrais-je l'appeler, etc. –