3

我正在尝试使用 Internet Explorer 11 中的 SendKeys 方法将特殊字符发送到文本框。尝试在其他浏览器中发送特殊字符时我没有遇到此问题,但 Internet Explorer 在尝试发送时发送完全不同的字符特殊字符。

大多数特殊字符都可以工作(例如!#()$%&/),但像@{}§ 这样的字符不起作用,并且在文本框中写入了类似 vbnm 的东西而不是这些字符。这些字母表示与键 Alt Gr 组合创建特殊符号的键(例如 Alt Gr + v = @、Alt Gr + b = {、Alt Gr + n = }、Alt Gr + m = §)。

我尝试使用 Action 对象通过 KeyDown 方法发送密钥,但它也没有成功,当尝试在其中写入带有“@”的字符串(例如 username@mail.com)时,特殊符号被替换为字母 'v '(用户名 vmail.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.");
        }
    }

将“@{}§~$%&()=" 字符串发送到文本框时,我将其作为输出。

发送时的用户名输出

4

1 回答 1

-1
string a = "@{}§~$%&()=";
string b = WebUtility.HtmlDecode(a);
于 2017-09-06T21:59:45.590 回答