如何模拟;按住“;(长按)casperjs/phantomjs中的键操作?
我正在使用casperjs测试一个类似网格的小部件。网格包含大量行。按住Shift键可以多选行,然后单击两个直接行,两次单击之间的行将被选中。下面是我测试此功能的代码段:如何模拟;按住“;(长按)casperjs/phantomjs中的键操作?,phantomjs,casperjs,keydown,keyup,Phantomjs,Casperjs,Keydown,Keyup,我正在使用casperjs测试一个类似网格的小部件。网格包含大量行。按住Shift键可以多选行,然后单击两个直接行,两次单击之间的行将被选中。下面是我测试此功能的代码段: casper.start(mytesturl); this.then(function sendKeydown(){ //send Shift keydown event this.page.sendEvent('keydown', '', null, null, 0x02000000); }); this.
casper.start(mytesturl);
this.then(function sendKeydown(){
//send Shift keydown event
this.page.sendEvent('keydown', '', null, null, 0x02000000);
});
this.then(function startClick(){
//click row 0
this.click('#row0', '50%', '50%');
});
this.then(function secondClick(){
//click row 3
this.click('#row3', '50%', '50%');
});
this.then(function sendKeyup(){
//send Shift keyup event
this.page.sendEvent('keyup', '', null, null, 0x02000000);
this.capture('afterKeyup.png');
});
我还尝试了“this.page.sendEvent('keyup',this.page.event.key.Shift);”,但都失败了,afterKeyup.png始终只显示选中了第3行,而不是选中了第0到第3行
我猜问题在于,Casperjs或Phantomjs在运行到其他步骤时不会保留keydown状态,因此每次我发送keydup事件时,它都会充当先按下Shift键的角色,test suite不认为Shift键现在处于按住状态(“keydown”)
所以我想知道我应该如何实现按住Shift键和单击事件
提前谢谢 不触发页面上的事件,而是查找哪个节点正在侦听(例如使用chrome开发工具)所需的事件,然后:
// node where event listeners are listening
var element = document.querySelector('foo#bar');
var evt = document.createEvent('HTMLEvents');
evt.initEvent('keydown', false, true);
element.dispatchEvent(evt);