Casperjs 为什么casper.on(';单击';…)没有触发?

Casperjs 为什么casper.on(';单击';…)没有触发?,casperjs,Casperjs,下面是一个执行Google查询的最小casper脚本。在运行脚本之前,我已经添加了casper.on('click'…),但它似乎没有被触发 我错过了什么 // File: google_click_test.js "use strict"; var casper = require('casper').create(); casper.on('click', function(css) { casper.echo('casper.on received click event '

下面是一个执行Google查询的最小casper脚本。在运行脚本之前,我已经添加了
casper.on('click'…)
,但它似乎没有被触发

我错过了什么

// File: google_click_test.js
"use strict";

var casper = require('casper').create();

casper.on('click', function(css) {
    casper.echo('casper.on received click event ' + css);
});

// ================================================================
// agenda starts here

casper.start('https://google.com', function g01() {
    casper.echo('seeking main page');
});

casper.then(function a02() {
    casper.waitForSelector(
        'form[action="/search"]',
        function() { 
            casper.echo("found search form"); 
        },
        function() { 
            casper.echo("failed to find search form"); 
            casper.exit(); 
        });
});

casper.then(function a03() {
    casper.fillSelectors('form[action="/search"]', {
        'input[title="Google Search"]' : 'casperjs'
    }, false);
});

casper.then(function a04() {
    casper.click('form[action="/search"] input[name="btnG"]')
    casper.echo('clicked search button');
});

casper.run();
输出:

这是输出。我希望在某个地方看到
casper.on接收到的点击事件
,但它似乎没有被触发:

$ casperjs --ignore-ssl-errors=true --web-security=no google_click_test.js
seeking main page
found search form
clicked search button
$ 

虽然您的示例使用casperjs 1.1.0-beta3和phantomjs 1.9.8运行良好,但在过去的几个月里,我在casperjs中遇到了类似的问题。遗憾的是,作者似乎已经停止了维护该项目。更多信息请点击此处:

我建议换一个不同的测试框架。在我的例子中,我选择了摩卡+柴+噩梦的组合。这一要点是一个很好的起点:


这一点做得很好。奇怪的是,我运行的组合和你一样(casperjs1.1.0.beta-3和phantomjs1.9.8)。不确定我们的结果为何不同。您还可以尝试侦听
远程.message
资源.error
页面.error
事件。也许phantomjs无法正确加载页面或其他东西。我还建议在一个非常简单的本地页面上运行它,启动一些控制台消息,然后收听
remote.message
事件,看看是否至少可以让一些事件处理程序响应。