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节点触发它们。确保这将通过事件侦听器的管道进行。