在Javascript中模拟鼠标点击

7
寻找一个能够通过 ID 或 CLASS name 标识的图像/按钮上执行左键单击,等待 x 秒并重复执行的 JavaScript,并能在 Chrome 和 Firefox 的开发者工具控制台中运行。

我试着自己写它,因为我认为这是一段简单的代码,但经过两个小时的尝试和错误,却没有成功,我开始没有其他选择。

希望有位 JavaScript 专家能抽出时间帮助一个非常初学者;)

谢谢


为什么不购买Ranorex或Quick Test Pro? - Ed Heal
1
这绝不是一个新手问题! - scrblnrd3
1
也许这可以帮助:https://dev59.com/snE95IYBdhLWcg3wCJRf - JCOC611
1
https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement.click,https://developer.mozilla.org/zh-CN/docs/Web/API/Window.setTimeout - Musa
3个回答

2
如果你愿意使用jQuery,你可以使用这个简单的函数来实现它:
window.setInterval(function(){
    $("#divToClick").trigger("click");
}, 1000);

每1000毫秒或1秒将调用它。

对于纯JavaScript解决方案,您应该查看如何在JavaScript中触发事件

或者,如果您不想支持IE,可以使用Event()构造函数和event.dispatch()来简单处理。


.trigger 挽救了我的生命。 - FaceBro

2

什么问题出现了

document.getElementById(id).click()

2
那只适用于输入元素和链接。 - scrblnrd3
试一下这个:http://jsfiddle.net/c7ghL/ - Diego Carrion

2
您可以使用事件构造函数和dispatchEvent来实现这一点:事件构造函数dispatchEvent
var support = true; // check if event constructor is supported

try {
    if (new MouseEvent('click', {bubbles: false}).bubbles !== false) {
        support = false;
    } else if (new MouseEvent('click', {bubbles: true}).bubbles !== true) {
        support = false;
    }
} catch (e) {
    support = false;
}

setInterval(function() {
    if (support) {
        var event = new MouseEvent('click');
    }else{
        var event = document.createEvent('Event');
        event.initEvent('click', true, true);
    }
    elem.dispatchEvent(event);
},1000);

FIDDLE


尝试在Fiddle上运行您编写的Javascript代码,但无法单击图像并未返回任何错误,只输出了44并且点击了。 - zyl1647
当然,要用实际的ID替换测试ID。 - zyl1647
@zyl1647 - 当相同的值被反复记录到控制台时,它会在前面添加一个数字表示记录到控制台的次数,尝试使用此代码 -> http://jsfiddle.net/hLnTy/4/ - adeneo
很遗憾,当脚本运行时,手动点击图像会输出[18, 18, 4, 3, 200, Array[3], "DBBBACCDECCD"]。 - zyl1647
这句话的意思不太清楚,请提供更多上下文,以便我翻译。 - zyl1647
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接