R.L*_*R.L 4 javascript jquery jquery-events
我正在对网站进行自动化测试,但我无法在 - 特别是但不限于 - IE 中使用 javascript 正确触发某些事件。(我正在使用 selenium,但其他所有选项都不起作用,所以 javascript 是我最后的希望)
事件的函数似乎在 jquery 事件对象中使用了很多字段,我尝试按照官方的 jquery 文档进行操作,但是虽然它显示了大多数字段名称,但它没有显示如何填充它们(因为这不是你所做的)它通常,但在我的情况下是)
我的问题如下:
为了伪造鼠标事件,我应该使用什么以及如何填充Event 对象的字段(如何创建这些值)jQuery.Event("event type",{param1:value1,param2:value2,...})(如果有更有效的方法,则可以使用其他方法)
此事件对象将与 element.trigger('eventname',EventObject)
您是否阅读过 jQuery 文档触发事件处理程序?
摘抄:
如果不是 .trigger(),我如何模仿原生浏览器事件?
为了触发本机浏览器事件,您必须对 < IE9 使用 document.createEventObject,对所有其他浏览器使用 document.createEvent。使用这两个 API,您可以以编程方式创建一个事件,该事件的行为就像某人实际单击了文件输入框一样。将发生默认操作,并显示浏览文件对话框。
jQuery UI 团队创建了jquery.simulate.js以简化触发原生浏览器事件以用于他们的自动化测试。它的用法模仿了 jQuery 的触发器。
基本上,整个内容可以总结如下:
function Settings() {
this.bubbles = true;
this.cancelable = true;
this.view = window;
this.screenX = 0;
this.screenY = 0;
this.clientX = 1;
this.clientY = 1;
this.ctrlKey = false;
this.altKey = false;
this.shiftKey = false;
this.metaKey = false;
this.button = 0; /* Which mouse button was pressed */
this.relatedTarget = null;
return this;
}
function simulateMouseEvent(type, target, s) {
var e = document.createEvent("MouseEvents");
e.initMouseEvent(type, s.bubbles, s.cancelable, s.view, 0, s.screenX, s.screenY, s.clientX, s.clientY, s.ctrlKey, s.altKey, s.shiftKey, s.metaKey, s.button, s.relatedTarget);
target.dispatchEvent(e);
}
var settings = new Settings, target = document.getElementById('myButton');
/* Try with something like this: */
simulateMouseEvent('mousedown', target, settings);
simulateMouseEvent('mouseup', target, settings);
simulateMouseEvent('click', target, settings);
Run Code Online (Sandbox Code Playgroud)
来源:https : //github.com/jquery/jquery-simulate/blob/master/jquery.simulate.js
此处描述了完整的参数列表:MouseEvent.initMouseEvent()
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |