首页 新闻 会员 周边

Javascript中如何模拟鼠标点击页面上的按钮?

0
悬赏园豆:5 [已关闭问题] 关闭于 2015-10-28 14:31

拿百度页面的“百度一下”按钮为例:

 

如上图所示,按钮为<input class="btn_wr s_btn_wr bg" type="submit" id="su" value="百度一下"></input>。

我的代码是如下的:

// JavaScript source code
var page = require('webpage').create();
var address = 'http://www.baidu.com/';
var output = 'capture.jpeg';
page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load address!');
    } else
    {
        try 
        {
            var url = page.url;
            console.log('URL: ' + url);
            page.evaluate(function () {
                document.getElementById('kw').value = "translate";
                document.getElementById('su').click();
            });
            url = page.url;
            console.log('URL: ' + url);
            window.setTimeout(function () {
                page.render(output, { format: 'jpeg', quality: '100' });
                phantom.exit();
            }, 200);
        } catch (err)
        {
            console.log(err);
        }
    }
});


注意我用橘黄色高亮的字体,我在点击按钮前后检测url是否发生变化,结果是在没有发生任何变化,这说明按钮没有被点击成功。(代码中粉色的部分是我获取按钮的方式)

请问:如果用Javascript模拟鼠标点击“百度一下”按钮?

天外归云的主页 天外归云 | 菜鸟二级 | 园豆:368
提问于:2015-10-28 11:18
< >
分享
所有回答(3)
0

获取dom对象调用点击事件

吴瑞祥 | 园豆:29449 (高人七级) | 2015-10-28 11:57

不好使。“document.getElementById('su').click();”

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 12:16

@天外归云: 不好使是哪不好使

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2015-10-28 13:38

@RosonJ: 我在“document.getElementById('su').click();”前后分别测了一下当前page的url,发现并没有变化。

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 13:41

@天外归云: url變不變跟用什麼function沒有關係吧

手點url會變?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2015-10-28 13:46

@RosonJ: 手点会变。

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 13:47

@天外归云: 一樣拿百度測試?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2015-10-28 13:48

@天外归云: 我測試是OK的,跟手點的行為一致,如果你的不是這樣那就幫不了你了

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2015-10-28 13:51

@RosonJ: 嗯,还是谢谢啦。

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 13:52

@天外归云: 問一下,你測試的時候,搜尋框裡有沒有打字?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2015-10-28 14:09

@RosonJ: 打字啦,填写的是translate。“document.getElementById('kw').value = "translate";”

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 14:11
0

selenium

nil | 园豆:879 (小虾三级) | 2015-10-28 13:32

不用selenium不行吗?JS不能完成吗?

支持(0) 反对(0) 天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 13:33
0

看来不得不试试CasperJS了,好吧。http://www.cnblogs.com/ziyunfei/archive/2012/09/27/2706254.html

天外归云 | 园豆:368 (菜鸟二级) | 2015-10-28 14:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册