WebDriverを使用して自動テストを実行しようとしていますが、現在、マウスホイールイベントをシミュレートする機能がありません。回避策として、代わりにJavaScriptを使用してこれらのイベントを発生させようとしています。私は現在、WebDriverフレームワーク内ではなく、まっすぐなHTMLページですべての実験を行っています。
具体的には、スクロールする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が期待する場所に配置)で起動して、ハンドラーがそれを取得できるようにするための最低限のことを誰かに教えてもらえますか?