casperjs的evaluate函数中使用casper.log就无法输出,代码如下
var casper = require('casper').create({
'verbose': true,
'logLevel': 'debug'
});
casper.start('http://www.baidu.com/', function() {
this.evaluate(function() {
this.log('asd', 'error'); // 这一条无法输出
});
});
大概的原因我也知道,应该是evaluate中的东西相当于在一个sandbox中执行,要与外界交互是只能通过特定的接口的
但这样造成我写程序的不便,因为在evaluate函数中就可能发生一些不可预期的情况,而我想把它log下来
我目前有两种解决方案
第二种解决方法的代码
casper.start('http://www.baidu.com/', function() {
this.evaluate(function() {
console.log('asd');
});
});
casper.on('remote.message', function(msg) {
this.log(msg, 'info');
});
所以有什么更好的解决方案吗?
大概看了下 casper 的文件,
evaluation
应该是在你打开的页面上执行函数,所以里面的代码貌似应该像是在写页面代码那样吧。我看示例是写的代码用于登录,所以尝试了一下这段
输出的内容中有一句:
在页面上调用 casper 的东西不太可能,
this.log
应该等同于window.log
,是个不存在的函数,理论上来说console.log
应该可以执行,但是没有反馈,也不晓得执行没得。通过测试发现有三种方案
壹 console记录的日志,会和页面本身的console信息
混合输出
贰 alert记录的日志
叁 [推荐] 官方实例