- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
try {
var Spooky = require("spooky");
} catch (e) {
console.log(e);
}
var spooky = new Spooky({
capser: {
logLevel: "debug",
verbose: true
},
child: {
command: "./casperjs/bin/casperjs",
port: 8081,
spooky_lib: "./node_modules/spooky/"
}
}, function (err) {
if(err) {
console.log(err);
}
spooky.start("http://www.google.com");
spooky.then(function () {
console.log("7331");
this.emit("printmsg", "1337");
});
spooky.run();
});
spooky.on("printmsg", function (msg) {
console.log(msg);
});
spooky.on("error", function (e) {
console.error(e);
});
运行时会显示1337
,7331
则不会。为什么是这样?我问的原因是因为当您想记录某些变量的值时很难调试。
此外,如果您想像这样更改 then 函数:
spooky.then(function () {
var self = this;
this.evaluate(function () {
self.emit("printmsg", "Hello World!");
});
});
这行不通,因为 evaluate
无法访问 self 变量。在 PhantomJS 中你可以让它成为 page.evaluate(function (self) {
但是当我用 Spooky 尝试它时它不起作用。所以当你想要记录数据时非常困难。
有解决办法吗?
最佳答案
自发布此问题以来,我已经找到导致我出现此问题的原因,因此我将在下面分享答案,以防其他人遇到类似问题:
在 the SpookyJS Github page 上的标准快速入门示例中,在 Spooky 中有一个注释掉的“控制台”事件监听器,当取消注释时,将导致 Casper 的所有输出出现在屏幕上:
// Uncomment this block to see all of the things Casper has to say.
// There are a lot.
// He has opinions.
spooky.on('console', function (line) {
console.log(line);
});
设置此事件监听器后,它会将 Casper 的所有输出记录到屏幕上。在我的问题中,我尝试登录到控制台的示例都在 Spooky 传递给 Casper 进行处理的调用中运行,所以这就是我没有看到它们显示的原因。设置此事件监听器后,将显示我的输出,以及 xShirase 的答案中 __utils__.echo
函数调用使用的输出。
此外,Casper 提供了一个 echo
函数,可用于将输出发送到 Casper 的评估函数之外,默认情况下,该函数只能访问正在查看的页面的范围:
spooky.then(function () {
this.echo("foo");
});
由于标准配置将Casper的日志记录级别设置为debug
并设置了verbose logging on,所以一旦设置了这个事件监听器就会显示很多信息。这可以通过将日志记录级别设置为 error
或其他一些 logging level supported by Casper 来避免。 .
关于javascript - SpookyJS:Console.log 在里面不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19958689/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!