2016-07-11 5 views
3

私はcasperjsを使ってグリッドのようなウィジェットをテストしています。グリッドには多数の行が含まれています。 Shiftキーを押したまま行を複数選択することができます。次に、2つの行をクリックすると、2回クリックする行が選択されます。ここに私のコードセグメントは、この機能をテストすることです:casperjs/phantomjsのキー操作を「長押し」する方法をシミュレートするには?

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'); 

}); 

私も試してみました。が、両方が失敗し、afterKeyup「this.page.sendEvent( 『keyUpイベント』、this.page.event.key.Shiftを)」 .png行0〜3が選択されているのではなく、行3のみが選択されていることを示します。

私は、CasperjsまたはPhantomjsが他のステップを実行するときにkeydownステータスを保持しないので、keyupイベントを送信するたびにShiftキーが最初に押されたときに動作し、 Shiftキーが現在押されていると思う(「keydown」)。

私は、クリックイベントを伴ってShiftキーを押し続けて達成するためにどのようにすればよいか知りたいですか?

ありがとうございます!代わりに、ページ上のイベントをトリガーする

答えて

0

、その後、必要なイベントのために(クロームのdevのツールを使用して例を。)聞いているノードを見つける:

// 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); 
関連する問題