我正在尝试使用CasperJS编写一个测试,其中在输入中按Enter键是页面触发输入文本的其他内容。
CasperJS测试的缩写/简化版本:
casper.start('http://localhost:3000/input-demo', function() {
this.sendKeys('#demo-input', 'demo text');
this.sendKeys('#demo-input', '\uE007');
this.test.assertEquals(this.getHTML('#stage'), 'input demo');
});
casper.run();
(我们将其作为casperjs test this-test.js
运行)
我已经确认sendKeys
正在将文本输入到输入中,但该文本从未显示在#stage
元素中。按键的“vanilla”PhantomJS实现工作正常,webpage.sendEvent('keypress', '\uE007')
导致页面上的事件处理程序触发。查看casper.sendKeys
的来源,我看到它委托给Casper实例的PhantomJS实例上的sendEvent
(即line 1613 in the current version of casper.js)。
有什么想法吗?有人用这些钥匙在CasperJS测试中工作吗?
答案 0 :(得分:12)
您可能希望将{keepFocus:true}添加到第一个sendKeys调用中。如果您看到源代码,但没有添加keepFocus,则会模糊文本区域,这意味着您的第二个sendKeys调用将不接受按键。
这似乎有效。
casper.start('http://localhost:3000/input-demo', function() {
this.sendKeys('#demo-input', 'demo text', {keepFocus: true});
this.sendKeys('#demo-input', casper.page.event.key.Enter , {keepFocus: true});
this.test.assertEquals(this.getHTML('#stage'), 'input demo');
});
casper.run();