作者:JayantKwon | 来源:互联网 | 2023-05-18 15:19
WatiNFireEvent不在FireFox中传递事件属性这已被记录为sourceforge中的一个错误,但现已删除。我正在使用FireFox3.6和相关的jssh。我可以在Fi
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’一切顺利。 希望这对现在有所帮助,但这需要在下一个版本中修复。
吉荣
上述就是C#学习教程:WatiN FireEvent不在FireFox中传递事件属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记