También es posible hacer doble clic con PhantomJS.
Recomendado
Esto está adaptado de la respuesta de stovroz y desencadena un nativo que dblclick
incluye los eventos mousedown
, mouseup
y click
(dos de cada uno).
var rect = page.evaluate(function(selector){
return document.querySelector(selector).getBoundingClientRect();
}, selector);
page.sendEvent('doubleclick', rect.left + rect.width / 2, rect.top + rect.height / 2);
Otras maneras
Las siguientes dos formas solo desencadenan el dblclick
evento, pero no los otros eventos que deberían precederlo.
Adaptado de esta respuesta de torazaburo :
page.evaluate(function(selector){
var el = document.querySelector(sel);
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
'dblclick',
true , true ,
window, null,
0, 0, 0, 0,
false, false, false, false,
0 , null
);
el.dispatchEvent(ev);
}, selector);
Adaptado de esta respuesta de Jobins John :
page.evaluate(function(selector){
var el = document.querySelector(sel);
var e = document.createEvent('MouseEvents');
e.initMouseEvent('dblclick', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
el.dispatchEvent(e);
}, selector);
Guión de prueba completo