1

Ich versuche, ein spezielles Zeichen in einem Textfeld mit der Methode SendKeys in Internet Explorer 11 zu senden. Ich hatte dieses Problem nicht beim Versuch, Sonderzeichen in anderen zu senden Browser, aber Internet Explorer sendet beim Versuch, Sonderzeichen zu senden, völlig unterschiedliche Zeichen.Senden von '@' Sonderzeichen mit SendKeys an IE 11

Die meisten Sonderzeichen funktionieren (z. B.! #() $% & /), aber die Zeichen wie @ {} § funktionieren nicht, und anstelle dieser Zeichen wird etwas wie vbnm in das Textfeld geschrieben. Diese Buchstaben stellen die Tasten dar, mit denen die Sonderzeichen in Kombination mit der Taste Alt Gr erzeugt werden (z. B. Alt Gr + v = @, Alt Gr + b = {, Alt Gr + n =}, Alt Gr + m = §).

Ich versuchte mit dem Action-Objekt, um die Schlüssel mit KeyDown-Methode zu senden, aber es war auch nicht erfolgreich, wenn Sie versuchen, eine Zeichenfolge mit '@' in es schreiben (z. B. [email protected]) das Sonderzeichen wird ersetzt der Buchstabe 'v' (Benutzernamevmail.com). Ich habe auch versucht, das ASCII-Äquivalent des @ -Zeichens zu verwenden, aber anstelle des Sonderzeichens habe ich den 64-Text in das Textfeld eingefügt.

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."); 
     } 
    } 

Beim Senden "@ {} § ~ $% &() =" string in die Textbox ich dies als eine Ausgabe zu erhalten.

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

+1

Haben Sie versucht, WebUtility.HtmlDecode (string text) mit? – IamBatman

+1

@IamBatman gerade versucht es jetzt, es funktioniert, danke für Ihren Kommentar –

+0

Gern geschehen. Froh, dass es geholfen hat. – IamBatman

Antwort

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

Bitte können Sie die Lösung detaillierter beschreiben? Ich stieß auf ein ähnliches Problem, und in meinem Fall, was ich sehe, ist "a == b", wenn ich Ihren Code ausführen. –

+0

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

+0

Vielen Dank für die Dokumentation Das war mir bewusst. Mich interessiert, wie diese Methode in diesen Anwendungsfall passen soll, wo soll ich es nennen, etc. –