代码之家  ›  专栏  ›  技术社区  ›  Pierre Baran

IWebElement sendkeys不发送某些字符

  •  0
  • Pierre Baran  · 技术社区  · 6 年前

    编辑:我已经找到了这个问题的解决方案:解决方案如下

    自从我把Selenium服务器安装移到另一台机器上后,我遇到了一个有趣的问题。

    自从我在这台新机器上运行测试以来,我的登录测试就不再工作了。

    经过调查,我发现password字段中填充了不正确的值(因此测试失败)。

    _passWordTextBox.Clear();
    _passWordTextBox.SendKeys("!!ä{dasd$352310!!!\\_XY>èà$£<?^^");
    

    enter image description here

    正如您所注意到的,唯一没有正确发送的字符是“!”性格。

    它一直在我的另一台机器上工作,而且其他几个可疑的候选对象(如$<)也被正确发送。

    密码字符串(如代码中所定义):

      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
    

    以下是最终写在文件中的内容:

    "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  _ abcdefghijklmnopqrstuvwxyz{|}
    

    !]^`~
    

    我还尝试了我的应用程序中的其他字段(不是passowrd或email验证的),比如描述字段,我得到了相同的结果:这几个字符没有被推送。

    我试着查看命令是否正确地发送到selenium服务器,因为它很突出

    08:05:35.850 DEBUG [ReverseProxyHandler.execute] - To upstream: {"value":["!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~?"]}
    

    这意味着服务器正确地接收到命令,但由于某种原因驱动程序或服务器没有正确执行。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Esteban Bonilla Velasquez    6 年前

    试试这个:

    _passWordTextBox.SendKeys(@"!!ä{dasd$352310!!!\\_XY>èà$£<?^^");
    

    也许是为了现场验证。

        2
  •  0
  •   Ukrainis    6 年前

    您可以尝试使用剪贴板:

    public static void SendValueFromClipboard(this IWebElement txtField, string value)
            {
                Clipboard.SetText(value);
                txtField.SendKeys(OpenQA.Selenium.Keys.Control + "v");
            }
    

    这是写在C#,你需要重写它的语言,你正在使用。

        3
  •  0
  •   Pierre Baran    6 年前

    在查看了多个系统设置之后,我发现我的引导和执行机器都添加了相同的区域设置 (格式:法语(瑞士),键盘:法语(瑞士) ,我没有再看下去。 在闲逛时,我发现了这样一个场景: Windows Setting for non Unicode programs

    事实证明,在执行测试的机器上,非Unicode程序的语言被设置为法语(瑞士)。把它改成英语(英国)解决了这个问题。