首页 > 解决方案 > Firefox 没有得到返回键

问题描述

WebElement element = ...
element.clear();
element.sendKey("1234567\n");

Chrome 得到了返回键,但 Firefox 没有。"\n" 和 Keys.RETURN/Keys.ENTER 有什么区别?

 element.sendKey("1234567\t");

但是 Chrome 没有得到 TAB 键。

标签: javaseleniumwebdriversendkeys

解决方案


当你有一个像“a\tb\nc”这样的java字符串时,它变成了一个ASCII值为65、9、66、10、67的字符序列。所以,如果你调用element.sendKey("a\tb\nc");,那么这些字节将被发送到浏览器随心所欲。

相比之下,键值是 unicode,可以在源文件中看到https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/Keys.java

TAB          ('\uE004'),
CLEAR        ('\uE005'),
RETURN       ('\uE006'),
ENTER        ('\uE007'),
SHIFT        ('\uE008'),

很明显,调用element.sendKey("a" + Keys.TAB + "b" + Keys.ENTER + "c");将导致将不同的字节序列发送到浏览器,而标准要求浏览器按您期望的方式执行的只是该序列。


推荐阅读