在JavaScript中模拟人工点击

时间:2011-09-17 20:34:06

标签: javascript web-crawler web-scraping

我有一个小刮刀,我需要使用JavaScript点击锚链接。我尝试了几种方法:jQuery.click()document.createEvent('MouseEvents')等等。它们都有效,但是它们没有像人工点击那样完全执行(它们打开一个像他们应该但不应该的标签开始下载)。

锚标记具有以下属性:

onclick="if (document.getElementById('ReportViewer_ctl01_ctl05_ctl00').selectedIndex == 0) return false; 
if (!ClientToolbarReportViewer_ctl01.HandleClientSideExport()) __doPostBack('ReportViewer$ctl01$ctl05$ctl01','');return false;"

我也试过在命令行中运行这个问题:

 __doPostBack('ReportViewer$ctl01$ctl05$ctl01','')

这也有点工作但不完全像人类点击。

如果需要,我可以进一步详细说明,但目前我正在寻找一个我认为应该存在的神奇子弹。

1 个答案:

答案 0 :(得分:4)

我保留了一个以两种编程方式保存的pastebin。当谷歌决定剥离其默认功能的窗口对象(和其他所有对象)时,它只会让我失望。>

http://pastebin.com/VMHvjRaR

function callClickEvent(element){
    var evt = document.createEvent("HTMLEvents"); 
    evt.initEvent("click", true, true); 
    element.dispatchEvent(evt);
}

function callClickEvent2(element){
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
    element.dispatchEvent(evt);
}

callClickEvent(document.getElementById("myElement"))
callClickEvent2(document.getElementById("myElement"))

MDN文档:

相关问题