17

我想从 Selenium 切换到 Poltergeist,但我需要模拟一个条形码扫描仪,它看起来像<body>标签的键盘输入。我将此代码与 Selenium 一起使用:

native.send_keys(send_key)

Poltergeist 有没有办法将一串键发送到任意元素(即,不是输入)?

4

4 回答 4

18

Poltergeist 现在有 send_keys 支持

element = find('input#id')

# send a simple string
element.native.send_key('String')

# send a series of keystrokes
element.native.send_keys('H', 'elo', :Left, 'l') # => 'Hello'

# symbol for special keys
element.native.send_key(:Enter) # triggers Enter key
于 2014-02-13T22:42:26.630 回答
3

从 PhantomJS 1.7(2012-09-22 发布)开始,您可以使用page.sendEvent.

该文档包括一个模拟 shift-A 的示例:

page.sendEvent('keypress', page.event.key.A, 
               null, null, 0x02000000 | 0x08000000 );

页面如何准确地处理输入(即目标)将取决于页面的状态,例如焦点所在的位置。

于 2013-06-11T13:26:08.047 回答
2

不,目前没有办法做到这一点。PhantomJS 确实为此提供了一个 API,因此将来可能会添加它,但目前不支持。

我建议尝试在 Javascript 中生成 DOM 键盘事件。或者只是使用 Selenium 保留这些规格,其余的使用 Poltergeist。

于 2013-03-05T22:26:43.930 回答
2

从 1.5.0 版本开始,poltergeist 支持基本的 send_keys。

https://github.com/jonleighton/poltergeist/blob/master/CHANGELOG.md#150

于 2013-12-24T06:14:48.627 回答