1

我想在Internet Explorer 11中使用SendKeys方法向文本框發送一個特殊字符。在嘗試在其他地方發送特殊字符時,我沒有這個問題瀏覽器,但Internet Explorer在發送特殊字符時發送完全不同的字符。用SendKeys向IE發送'@'特殊字符11

大多數特價人物做的工作(如!#()$%& /),但如@ {}§字符不工作,而是這些字符,像vbnm寫在文本框中。這些字母代表與特殊符號組合使用的鍵,它們與Alt Gr(例如Alt Gr + v = @,Alt Gr + b = {,Alt Gr + n =},Alt Gr + m =§)組合在一起創建。

我嘗試使用Action對象來發送KeyDown方法的鍵,但它也不成功,當試圖寫一個字符串與'@'在它(例如[email protected])特殊符號被替換爲字母'v'(usernamevmail.com)。我也嘗試使用'@'符號的ASCII等價物,而不是特殊字符,我在文本框中放置了'64'文本。

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

當發送 「@ {}§〜$%&()=」 字符串文本框中我得到這個作爲輸出。

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

+1

您是否嘗試過使用WebUtility.HtmlDecode(字符串文本)? – IamBatman

+1

@IamBatman現在就試用了,效果很好,謝謝您的評論 –

+0

不客氣。很高興幫助。 – IamBatman

回答

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

請你能更詳細地描述解決方案嗎?我遇到了類似的問題,在我的例子中,當我運行你的代碼時,我看到的是'a == b'。 –

+0

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

+0

非常感謝你的文檔,我意識到這一點。我對這種方法應該如何適合這個用例感興趣,我應該在哪裏調用它,等等。 –