WatiN FireEvent不在FireFox中传递事件属性

这已被记录为sourceforge中的一个错误,但现已删除。

我正在使用FireFox 3.6和相关的jssh。

我可以在Firebug中看到事件属性没有被设置。 我正在尝试拖放下面的代码

var mouseDownEvent = new NameValueCollection {{"button", "1"}, {"clientX", "0"}, {"clientY", "0"}}; firstStoryRow.FireEventNoWait("onmousedown", mouseDownEvent); 

有传递这些属性的变通方法但不是很好。

有人知道这是否是WatiN中的真正限制或者我做错了什么?

这确实是FireFox实施中的一个缺点。 鼠标事件将忽略所有给定的参数/值。 这应该是固定的,并不是那么难。 我将在SourceForge上重新打开这个问题。

为了使这项工作,您可以运行此代码,这是WatiN实际为您做的事情:

 var jscriptref = firstStoryRow.GetJavascriptElementReference(); var fireeventcode = string.Format("var event = {0}.ownerDocument.createEvent('MouseEvents');",jscriptref); // Params for the initMouseEvent: // 'type', bubbles, cancelable, windowObject, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget ) fireeventcode += "event.initMouseEvent('mousedown', true, true, null, 0, 0, 0, 0, 0, false, false, false, false, 1, null);"; fireeventcode += string.Format("var res = {0}.dispatchEvent(event);", jscriptref); fireeventcode += "if(res){true;}else{false;};"; // make it a NoWait call by wrapping it in a timer call. fireeventcode = JSUtils.WrapCommandInTimer(fireeventcode); var result = browser.Eval(fireeventcode); 

如果result ==’true’一切顺利。 希望这对现在有所帮助,但这需要在下一个版本中修复。

吉荣