send_keys支持Poltergeist?

时间:2013-03-05 19:41:58

标签: poltergeist

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

native.send_keys(send_key)

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

4 个答案:

答案 0 :(得分:18)

吵闹现在has send_keys support

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

答案 1 :(得分:3)

自PhantomJS 1.7(2012-09-22发布)以来,您可以使用page.sendEvent向无头浏览器发送键盘事件。

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

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

页面处理输入的确切程度(即目标是什么)将取决于页面的状态,例如焦点位置。

答案 2 :(得分:2)

不,目前无法做到这一点。 PhantomJS确实为此提供了API,因此可以在将来添加,但目前不支持。

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

答案 3 :(得分:2)

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

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