我想从Selenium切换到Poltergeist,但我需要模拟条形码扫描仪,它看起来像是<body>
标签的键盘输入。我在Selenium中使用这段代码:
native.send_keys(send_key)
Poltergeist是否有办法将一串键发送到任意元素(即不是输入)?
答案 0 :(得分:18)
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