我试图在CasperJS中编写一个评估函数,但是当我调用click事件时,我遇到了一个问题。这是一个快速代码块来说明问题:
returnVal = casper.evaluate(() ->
document.querySelector('.class').click()
return true
returnVal
在上面总是为null,即使该类存在。
在我的实际代码中,我需要运行大量代码,并且我希望在整个过程中执行多个单击事件。
当调用click()
时,CasperJS的设计是否立即返回?或者我错过了一些非常简单的东西?
答案 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完全相同。