Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 触发鼠标滚轮滚动事件-木偶演员_Javascript_Jquery_Html_Testing - Fatal编程技术网

Javascript 触发鼠标滚轮滚动事件-木偶演员

Javascript 触发鼠标滚轮滚动事件-木偶演员,javascript,jquery,html,testing,Javascript,Jquery,Html,Testing,我有一个脚本,需要在其中测试页面上的滚动功能。我有两个滚动条,一个用于浏览器窗口,另一个用于网格,我在其中实现了无限滚动。我正在测试浏览器窗口滚动,如下所示: (async () => { const innerWidth = await page.evaluate(_ => { return window.innerWidth} ); const innerHeight = await page.evaluate(_ => { return window.i

我有一个脚本,需要在其中测试页面上的滚动功能。我有两个滚动条,一个用于浏览器窗口,另一个用于网格,我在其中实现了无限滚动。我正在测试浏览器窗口滚动,如下所示:

(async () => {

    const innerWidth = await page.evaluate(_ => { return window.innerWidth} );
    const innerHeight = await page.evaluate(_ => { return window.innerHeight} );
    const mouse = page.mouse
    await mouse.move(innerWidth/2, innerHeight/2);

    await page.waitFor(500);

    // Scroll Window
    page.evaluate(_ => {
        window.scrollBy(0, innerHeight);
    });     
    ...
}();
这适用于窗口滚动,但是,我不能用它来测试网格中的鼠标滚轮滚动。我知道有一种方法可以在JQuery中创建鼠标滚轮事件,如下所示:

$(".testdiv").on('mousewheel', function(e){
  console.log(e);

})
var event = jQuery.Event( "mousewheel" );
event.deltaY = -1;
$(".testdiv").trigger(event); 

我需要在纯JS中执行此操作。在我的纯JS脚本中有没有实现这个的方法?

您想要的是使用纯JS实现鼠标滚轮,并对其进行测试;i、 e.调用自定义事件

为了添加鼠标滚轮侦听器

yourdomNode.addEventListener('mousewheel', ()=>{
    //Some mousewheel listener
});
如果您想发送一个定制事件(用于测试),可以执行以下操作。您当然可以向创建的事件添加更多信息,以符合您的测试目的

var cEvent = new Event('mousewheel');

cEvent.detail = 0;
cEvent.wheelDeltaY = someWheelDeltaY;
cEvent.wheelDeltaX = someWeelDeltaX;

if (cEvent.wheelDeltaY) {
  cEvent.wheelDelta = somewheelDeltaY;
} else if (cEvent.wheelDeltaX) {
  cEvent.wheelDelta = someWheelDeltaX;
}

yourdomNode.dispatchEvent(cEvent);

好的,我想我理解了一般原则,我正在创建一个自定义事件。然而,我不确定这在我的具体案例中会起什么作用。我所需要做的就是将鼠标移动到页面中的特定点,如:
wait mouse.move(innerWidth/2,innerHeight/2)
然后触发鼠标滚动事件。换句话说,它与特定的DOM节点无关。无论谁在阅读我的评论,我都会很高兴地发现我错了,因为我已经搜索了很长时间。您无法在浏览器中控制鼠标或键盘本身。您可以做的是创建自定义事件,并通过dom节点触发它们。确保这将通过事件侦听器的管道进行。