我正在使用WebDriver进行自动化测试,但是它目前无法模拟鼠标滚轮事件。作为解决方法,我正在尝试使用JavaScript来触发这些事件。我目前在一个普通的HTML页面上进行所有的滚轮实验,而不是在WebDriver框架内。
我特别想要在一个可滚动的div元素上触发鼠标滚轮事件。
到目前为止,我已经成功地在Chrome和IE9中完成了这个过程,但是在Firefox(5.x)中似乎无法工作。
我正在使用以下跨浏览器代码来检测鼠标滚轮事件是否被触发,我从网络上抓取了这段代码。当我在创建的可滚动div(id ='view')中滚动鼠标滚轮时,这段代码可以在所有浏览器中检测到事件的触发。
<script type="text/javascript">
function wheel(event) {
var delta = 0;
if (!event) {
event = view.event;
}
if (event.wheelDelta) {
delta = event.wheelDelta / 120;
}
else if (event.detail) {
delta = -event.detail / 3;
}
alert(delta);
}
var view = document.getElementById('view');
if (view.addEventListener) {
view.addEventListener('DOMMouseScroll', wheel, false);
}
view.onmousewheel = wheel;
</script>
调用下面的函数时,能够在Chrome和IE9中触发鼠标滚轮事件,并以预期的行为在上述处理程序中被捕获。
function ChromeWheel () {
var evt = document.createEvent("MouseEvents");
evt.initEvent('mousewheel', true, true);
evt.wheelDelta = 120;
view.dispatchEvent(evt);
}
当然,这不适用于Firefox。我发现现有的文档过于稀少和混乱,无法知道FF如何处理这个问题。有人能展示一下在Firefox中触发鼠标滚轮事件的最基本方法吗?使其具有滚轮增量(放置在Firefox期望的位置),以便我的处理程序可以获取它。