CasperJS中的click()立即返回null,忽略其他行

时间:2015-11-18 23:03:19

标签: javascript click phantomjs casperjs

我试图在CasperJS中编写一个评估函数,但是当我调用click事件时,我遇到了一个问题。这是一个快速代码块来说明问题:

returnVal = casper.evaluate(() ->
    document.querySelector('.class').click()
    return true

returnVal在上面总是为null,即使该类存在。

在我的实际代码中,我需要运行大量代码,并且我希望在整个过程中执行多个单击事件。

当调用click()时,CasperJS的设计是否立即返回?或者我错过了一些非常简单的东西?

1 个答案:

答案 0 :(得分:1)

当您注册某些错误事件时,例如" page.error":

casper.on("page.error", function(msg, trace) {
    this.echo("Error: " + msg);
});

然后您将看到click()不是可以调用的函数。 PhantomJS 1.x仅支持click()<input>元素上的<button>,甚至不一致。使用CasperJS&#39;如果你想要一致的行为,你自己的点击功能:

casper.then(function(){
    this.click(".class");
});

evaluate()调用的结果始终为null(undefined),因为return语句永远不会执行。在此之前的行中会抛出未被捕获的错误。

这是用JavaScript编写的,但与CoffeeScript完全相同。