【问题标题】:SendKeys() method ignores some characters when sending to a text boxSendKeys() 方法在发送到文本框时忽略某些字符
【发布时间】:2019-02-25 18:18:43
【问题描述】:

编辑:我找到了解决这个问题的方法:下面的解决方案

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

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

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

我正在尝试执行以下操作:

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

以下是在这些行之后填充字段的方式:

如您所见,唯一未正确发送的字符是“!”字符。

它一直在我的另一台机器上工作,并且其他几个可疑的候选人(如 $éà

我已经研究了运行测试的计算机和执行测试的服务器之间的文化差异方向,但我无法找到结论性的东西。

我尝试了以下方法:

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

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

这是最终写入文件中的内容:

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

识别出的字符不起作用:

!]^`~

我也尝试过在我的应用程序中的其他字段(未验证密码或电子邮件),例如描述字段,我得到了相同的结果:没有推送这几个字符。

我尝试查看命令是否正确发送到 selenium 服务器,因为它很明显

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

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

【问题讨论】:

  • 用相关的 HTML 更新问题
  • 尝试一次发送一个字符...现在可以了吗?你的双反斜杠也被视为转义,\` -&gt; `。
  • 一次发送一个字符并不能解决问题
  • 您使用的是什么操作系统?是键盘驱动程序有所不同。在 Windows 上,控制中心有键盘设置 - 检查两台机器上是否相同。
  • 我认为键盘驱动程序没有什么不同,因为我已经能够自己用键盘输入!]^`~,只是 sendKeys() 不会发送它们至于操作系统,我在两台机器上都在 Windows 10 上,两台机器上都有键盘瑞士法语

标签: selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

试试这个:

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

也许是为了验证字段。

【讨论】:

    【解决方案2】:

    您可以尝试使用剪贴板:

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

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

    【讨论】:

    • 使用剪贴板不是一种选择,因为执行测试的机器和执行测试的机器不同,因此不共享剪贴板。
    【解决方案3】:

    查看多个系统设置后,我发现我的试验机和执行机都添加了相同的区域设置(格式:法语(瑞士),键盘:法语(瑞士),而我没有再看看。 在摆弄时我发现了这个设置:

    事实证明,在执行测试的机器上,非 Unicode 程序的语言设置为法语(瑞士)。将其更改为 English(UK) 即可解决问题。

    可能是 chromedriver 中的一个错误。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多