Я пытаюсь выполнить автоматическое тестирование с помощью 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 с дельтой колеса (помещенной там, где FF ожидает его), так что мой обработчик подберет ее?