我正在尝试使用 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 期望的位置)触发鼠标滚轮事件的最低限度,以便我的处理程序将其拾取?