【问题标题】:Why caret symbol "^" doesn't work with Java+Selenium+Eclipse?为什么插入符号“^”不适用于 Java+Selenium+Eclipse?
【发布时间】:2019-03-30 08:03:53
【问题描述】:

我正在尝试使用字母和特殊字符编写密码,但字符插入符号“^”不起作用。我尝试在sendKeys之后添加\^(因为我正在使用Java进行测试),编写了unicode等。

“`”等其他字符工作正常。但这不起作用

webDriver.findElement(By.id("password")).sendKeys("\\^"); 
webDriver.findElement(By.id("password")).sendKeys("ExA^mplePass1"); 

你能帮帮我吗?

谢谢

【问题讨论】:

  • 在 C# 中有同样的问题,几周前开始发生 - 一个工作多年的测试开始失败。升级的硒和铬驱动程序 - 没有乐趣。我调试了,肯定 webElement.SendKeys("^") 只是被忽略了。
  • 更新 - 我用 selenium FirefoxDriver 运行它并且它工作,所以它可能是 ChromeDriver 的东西。
  • 同样的问题:即使转义序列 (.SendKeys("\u005E")) 也会被忽略。似乎是语言/键盘布局问题。 .SendKeys(Keys.Shift + "6") 为您打印什么?它应该使用美国键盘布局打印^,我相信 Selenium/ChromeDriver 应该默认使用它。您的机器上安装了美式键盘布局吗?

标签: java eclipse selenium unicode sendkeys


【解决方案1】:

我可以证实我的怀疑:ChromeDriver 被配置为始终使用键盘布局US - QWERTY。如果未找到,则使用其他一些非常基本的布局,其中不包含特殊字符,如 ^°。结果:特殊字符不会被打印出来,不管你传递给SendKeys()

这种行为实际上是by design 甚至well documented。一个信息日志条目提到了这个问题,如果一个实际上是enables logging

无法切换到美式键盘布局 - 某些键可能会被解释 错误的

解决方案是安装键盘布局US - QWERTY(代码00000409)(不是US International - QWERTY或类似的东西)。添加此布局的语言无关紧要。

转到 Windows“语言设置”,单击“首选语言”部分下的任何语言,然后选择“选项”。然后添加US - QWERTY

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多