【发布时间】:2015-10-09 13:28:54
【问题描述】:
我正在尝试使用 javascript 模拟“输入”按键以实现自动化。
var script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-1.10.2.min.js';
script.type = 'text/javascript';
document.body.appendChild(script);
var e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
e.keyCode = 13;
这是用于设置按键事件的代码(我也尝试过 keydown 和 keyup)。
搜索 Google 时,这似乎不起作用。如果我输入一些文本并在输入字段$("[name=q]").trigger(e) 上触发事件,则不会发生任何事情。
我正在使用 google 来测试模拟“正确”输入事件。我希望用js来自动化skype web客户端。
有谁知道是否可以使用 javascript 模拟实际的输入按键?我已经看到 Selenide 的 pressEnter() 有效,但它使用 webdriver,所以可能不相关。
我也试过原生js事件触发
var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) {
var e = document.createEvent("KeyboardEvents");
e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1));
target.dispatchEvent(e);
};
dispatchKeyboardEvent($("[name=q]"), 'keypress', true, true, null, 'h', 13, '');
旁注我知道可以通过在元素上调用 .submit() 来提交查询,但这不是我想要的。
【问题讨论】:
-
什么都没发生?我希望错误控制台会抱怨没有定义 jQuery。 (除非在您运行脚本之前已经定义,在这种情况下前四行毫无意义)。
-
没有错误,它像大多数 jquery 调用一样吐出元素
-
你选择的元素是否与jquery绑定?
-
@Bobbzorzen 我已经对此进行了研究,但一无所获,唯一能做的就是触发已经绑定的侦听器,但这不会触发真正的 keyevent。
-
@Bobbzorzen 要检索点击侦听器数组,您可以执行
$._data( $("body")[0], "events" )["click"]。每个监听器对象都有一个handler属性,可以通过aListener.handler.toString()获取函数的字符串表示
标签: javascript jquery events