Как смоделировать mousedown - mousemove - mouseup в Javascript с селеном? - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над проектом, в котором мне нужно протестировать мышь и переместить ее вверх. Реальный сценарий - при щелчке мышью вниз, это начальная точка линии, а при перемещении с нажатой мышью вниз вторая точка линии будет перемещаться с помощью курсора мыши. Затем, когда мышь вверх, это конечная точка линии.

Я должен смоделировать это с селеном. Я использую следующий код:

var evt = document.createEvent('MouseEvents');

evt.initMouseEvent('mousedown', // name
                   true, // bubbles
                   true, // cancelable
                   window, // view
                   1, // detail
                   point.x, // screenX
                   point.y, // screenY
                   point.x,
                   point.y,
                   false, // ctrlKey
                   false, // altKey
                   false, // shiftKey
                   false, // metaKey
                   0, // button
                   null); // relatedTarget

evt._simul = true; 

el.dispatchEvent(evt);

var toPoint = TestUtils.getScreenPixelFromVector3(new Three.Vector3(8918.282712, 100, 100));
el = document.elementFromPoint(toPoint.x, toPoint.y);

//   evt.initEvent('mousemove', true, true);

evt.initMouseEvent('mousemove', // name
                   true, // bubbles
                   true, // cancelable
                   window, // view
                   1, // detail
                   toPoint.x, // screenX
                   toPoint.y, // screenY
                   toPoint.x,
                   toPoint.y,
                   false, // ctrlKey
                   false, // altKey
                   false, // shiftKey
                   false, // metaKey
                   0, // button
                   null); // relatedTarget

evt._simul = true; 

el.dispatchEvent(evt);


evt.initMouseEvent('mouseup', 
                   true, 
                   true, 
                   window, 
                   1, 
                   toPoint.x, 
                   toPoint.y, 
                   toPoint.x,
                   toPoint.y,
                   false,
                   false, 
                   false, 
                   false, 
                   0, 
                   null); 

evt._simul = true; 

el.dispatchEvent(evt);

Но после перемещения мыши, подъем мыши не происходит должным образом. Все еще движение мыши включено. Любое предложение, как я могу справиться с этим?

...