使用io钩子移动puppteer的鼠标

时间:2019-12-19 07:38:30

标签: javascript node.js puppeteer

当我按住鼠标左键时,是否可以使操纵up的光标按住鼠标左键(进行绘制或拖动)?并在同一位置?

我使用IoHook做了一些事情。

    ioHook.on("mouseclick", event => {
//console.log(event.x);
/* You get object like this
{
  type: 'mousemove',
  x: 700,
  y: 400
}
*/
var x = event.x
var y = event.y - 71
page.mouse.click(x, y, { button: 'left' })
});


ioHook.on("mousemove", event => {
//console.log(event.x);
/* You get object like this
{
  type: 'mousemove',
  x: 700,
  y: 400
}
*/
var x = event.x
var y = event.y - 71
page.mouse.move(x, y)
});

这段代码跟随我的鼠标,并在我单击的位置单击,但是它不会按住鼠标左键并在我移动的位置移动。因此,我想像鼠标基本操作一样跟随鼠标的光标拉动。

page.mouse.click(x,y,{button:'left'})被用作木偶的光标。

2 个答案:

答案 0 :(得分:2)

在puppeteer文档网站中:

https://pptr.dev/#?product=Puppeteer&version=v2.0.0&show=api-class-mouse

  

使用“ page.mouse”跟踪一个100x100的正方形。

await page.mouse.move(0, 0);
await page.mouse.down();
await page.mouse.move(0, 100);
await page.mouse.move(100, 100);
await page.mouse.move(100, 0);
await page.mouse.move(0, 0);
await page.mouse.up();

因此,要进行鼠标拖动,必须在await page.mouse.move()之后和await page.mouse.down()之前放置一些await page.mouse.up()

page.mouse.click()是两个事件mouse.down()mouse.up()在同一位置上的组合,但延迟时间很短。

在IOHook文档中: https://wilix-team.github.io/iohook/usage.html#mousedrag

  

在用户单击并拖动某些东西时触发。

{ button: 0, clicks: 0, x: 373, y: 683, type: 'mousedrag' }

因此,解决方案是,您必须监听mousedrag事件。

答案 1 :(得分:0)

解决方案。添加了mousedrag事件。

ioHook.on("mousedrag", event => {
var x = event.x
var y = event.y - 71
console.log( "mouseDRAG!!!" + event)
page.mouse.move(x, y);
});


ioHook.on("mousemove", event => {
var x = event.x
var y = event.y - 71
console.log( "mousemove!!!" + event)
page.mouse.move(x, y);
});


ioHook.on("mousedown", event => {
var x = event.x
var y = event.y - 71
console.log( "mousedown!!!" + event)
page.mouse.down();
});

ioHook.on("mouseup", event => {
var x = event.x
var y = event.y - 71
console.log( "mouseup!!!" + event)
page.mouse.up();
});