编辑:我已经找到了解决该问题的方法:下面的解决方法
自从我将Selenium Server安装转移到另一台机器以来,我一直遇到一个有趣的问题。
每当我在这台新计算机上运行测试时,登录测试就不再起作用。
经过调查,我发现密码字段填充的值不正确(因此测试失败)。
我正在尝试执行以下操作:
_passWordTextBox.Clear();
_passWordTextBox.SendKeys("!!ä{dasd$352310!!!\\_XY>èà$£<?^^");
这是在这些行之后填充字段的方式:
您可能会注意到,唯一未正确发送的字符是“!”。字符。
它一直可以在我的另一台机器上运行,并且其他几个可疑候选对象(例如$éà<)也可以正确发送。
我一直在研究计算机运行和执行测试的服务器之间的文化差异,但是我一直无法找到结论性的东西。
我尝试了以下操作:
密码字符串(如代码中所定义):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
这是最终被写入文件内部的内容:
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ _ abcdefghijklmnopqrstuvwxyz{|}
已识别的无效字符:
!]^`~
我还在应用程序的其他字段(没有经过passowrd或电子邮件验证)中尝试过,例如Description字段,但我得到了相同的结果:这几个字符没有被按下。
我试图查看命令是否已正确发送到selenium服务器,因为它很明显
08:05:35.850 DEBUG [ReverseProxyHandler.execute] - To upstream: {"value":["!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~?"]}
这意味着服务器正确接收了该命令,但由于某种原因驱动程序或服务器无法正常执行。
答案 0 :(得分:0)
尝试一下:
_passWordTextBox.SendKeys(@"!!ä{dasd$352310!!!\\_XY>èà$£<?^^");
也许是针对来自字段的验证。
答案 1 :(得分:0)
您可以尝试使用剪贴板:
public static void SendValueFromClipboard(this IWebElement txtField, string value)
{
Clipboard.SetText(value);
txtField.SendKeys(OpenQA.Selenium.Keys.Control + "v");
}
这是用C#编写的,您需要使用自己的语言重写它。
答案 2 :(得分:0)