作为我正在开发的测试框架的一部分,我需要能够在 Chrome 中模拟键盘事件。更具体地说,我需要填写 INPUT 元素的值。这在 Firefox 中相对容易做到,但由于某种原因,Chrome 只是忽略了我生成的事件。(好吧,并没有真正忽略它们,见下文)
我在这里审查了一些关于 SO 的问题,包括:
- Chrome中的Keydown Simulation正常触发但不是正确的键
- 是否可以以编程方式模拟按键事件?
- 在 Chrome 上触发键盘事件
- 使用 JavaScript 在 Safari 中触发键盘事件
问题不在于事件没有被调度(它们是)或接收(它们是),而是 Chrome 没有将字符插入到表单元素中。
请在 JSBin 上查看此示例(基于上面列表中的第一个 URL,其中包含对 which/keyCode == 0 问题的修复)
Chrome 对这些生成的 KeyboardEvents 做了什么,有没有办法说服它将模拟键注入表单元素?
笔记:
- 测试框架本质上与 Selenium 相似,需要模拟键盘和鼠标事件来代替用户交互。由于项目的性质,这个测试框架需要自定义构建,我目前无法使用 Selenium
- 潜在的解决方案不需要任何 3rd 方库,并且必须在 Chrome 23+ 中运行
- 目前我正在为按键事件添加一个监听器并手动注入字符。我想避免这种情况,因为我必须在测试时注入这个额外的代码。