使用casper测试模态对话框:
.then(function() {
this.click(variables.configButton);
}).then(function() {
this.capture('./test/screencaps/edit-afterClickFlyout1.png');
test.assertVisible('#addDataDialog');
}).then(function() {
// send ESC key, how?
}).then(function() {
this.capture('./test/screencaps/edit-afterClickFlyout2.png');
test.assertNotVisible('#addDataDialog');
}).run(function() {
test.done();
});
这是一个角度模态,因此按下ESC将关闭它。 Casper有sendKeys
但是:
目前支持的可以接收键盘事件的HTMLElements 来自sendKeys,和,以及任何HTMLElement 属性contenteditable =" true"。
如果我在页面上没有任何文字输入,那就有点问题了。我可以在其他控件中添加一个或设置contenteditable,但这意味着我修改页面以使测试通过,这不是很好。
(我通过给予取消链接ID并在其上使用this.click
来解决问题,但我真的不应该修改我的标记以进行测试通过)
如何使用casper发送简单的按键?
答案 0 :(得分:3)
要走的路是发送phantomjs特殊键。
casper.then(function() {
test.comment('Send Esc key');
this.sendKeys('#contact-us-modal', casper.page.event.key.Escape);
});
以下是casper.page.event.key
中可用的list特殊键以下是sendKeys文档链接。
答案 1 :(得分:2)
如果您的页面中有jQuery,则可以使用此代码来触发密钥,但由于安全考虑,它可能无法正常工作。请参阅此post。
casper.thenEvaluate(function(){
var esc = $.Event("keydown", { keyCode: 27 });
$("body").trigger(esc);
});
我确信还有非jQuery版本。