selenium 发送到文本框时,SendKeys()方法会忽略某些字符

mum43rcc  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(209)

我将Selify安装移到了一个新的服务器上,从那时起,一些使用登录的测试不再有效。
经过调查,我发现密码字段填充了错误的值。因此,测试失败了。
我正在努力做到以下几点:

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

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

“!”角色是唯一缺失的角色。它在前一台服务器上运行正常。其他一些可疑的字符(如$éja<)也起作用了。
我已经查看了服务器之间的区域设置(文化差异)。

从密码字符串中发送的这些字符中

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

所有这些都运行正常:

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

只有这些未能正确发送:

!]^`~

我还尝试了其他字段(如Description字段),也看到了同样的失败。
我尝试查看该命令是否正确地发送到Selify服务器,但日志似乎表明它起作用了:

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

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

ipakzgxi

ipakzgxi1#

试试这个:

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

也许是为了现场的验证。

hgb9j2n6

hgb9j2n62#

您可以尝试使用剪贴板:

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

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

wbgh16ku

wbgh16ku3#

在查看了多个系统设置后,我发现我的飞行员和执行机器都添加了相同的区域设置**(格式:法语(瑞士),键盘:法语(瑞士)**,我没有再查看任何内容。在闲逛的时候,我发现了这个设置:

结果是,在执行测试的机器上,非Unicode程序的语言被设置为法语(瑞士)。将其更改为英语(英国)解决了问题。
可能是chromeDRIVER中的错误。

8dtrkrch

8dtrkrch4#

您的解决方案对我不起作用,因为我已经将该设置设置为英语,但如果其他人感兴趣,我找到了一个解决方案。
只需在任务栏中将键盘更改为ENG UK即可。

相关问题