Javascript 从evaluate方法调用时不显示消息
我不熟悉casperjs,也不熟悉它,但我无法让它的Javascript 从evaluate方法调用时不显示消息,javascript,casperjs,Javascript,Casperjs,我不熟悉casperjs,也不熟悉它,但我无法让它的evaluate()功能正常工作 这是我的例子 var casper = require('casper').create(); casper.echo('started...'); casper.start('http://www.google.de/'); casper.then(function() { this.echo(this.getTitle()); }); casper.then(function() {
evaluate()
功能正常工作
这是我的例子
var casper = require('casper').create();
casper.echo('started...');
casper.start('http://www.google.de/');
casper.then(function() {
this.echo(this.getTitle());
});
casper.then(function() {
this.evaluate(function() {
this.echo('test');
});
});
casper.run();
我用casperjs sample.js执行它
在启动之后…
和Google
在控制台输出中没有发生任何事情。不执行evaluate方法中给出的闭包函数
我甚至无法通过控制台通过--verbose
获取更多信息
我做错了什么?回调的内部是页面上下文。其中的所有内容都直接在页面上执行,并且是沙盒此
引用此回调中的窗口
对象。我怀疑谷歌添加了window.echo
功能。因此,您将不会在控制台中看到某些内容this.echo
或casper.echo
仅在页面上下文之外可用
要从页面上下文中实际查看控制台消息,您需要注册到事件:
casper.on(“remote.message”,函数(msg){
this.echo(“remote.msg:+msg”);
});
然后在控制台上写一些东西:
this.evaluate(函数(){
console.log('test');
});
如果您已注册参加该活动:
casper.on(“page.error”,函数(pageErr){
this.echo(“page.err:+JSON.stringify(pageErr));
});
您会看到,无法调用window.echo
,因为它是未定义的
。调用它将导致TypeError,它停止执行evaluate()
回调,然后作为执行evaluate()
的结果,它将为您提供null
有关评估的更多信息,请参见我的答案
注意:尝试在google上编写您的第一个脚本不是一个好主意,因为您将遇到多个问题。谷歌嗅探用户代理,并将根据它给你一个不同的网站。此外,还将考虑视口大小。我建议您先从example.org开始,然后再从stackoverflow.com开始,因为两者都表现得相当好。回调的内部是页面上下文。其中的所有内容都直接在页面上执行,并且是沙盒此
引用此回调中的窗口
对象。我怀疑谷歌添加了window.echo
功能。因此,您将不会在控制台中看到某些内容this.echo
或casper.echo
仅在页面上下文之外可用
要从页面上下文中实际查看控制台消息,您需要注册到事件:
casper.on(“remote.message”,函数(msg){
this.echo(“remote.msg:+msg”);
});
然后在控制台上写一些东西:
this.evaluate(函数(){
console.log('test');
});
如果您已注册参加该活动:
casper.on(“page.error”,函数(pageErr){
this.echo(“page.err:+JSON.stringify(pageErr));
});
您会看到,无法调用window.echo
,因为它是未定义的
。调用它将导致TypeError,它停止执行evaluate()
回调,然后作为执行evaluate()
的结果,它将为您提供null
有关评估的更多信息,请参见我的答案
注意:尝试在google上编写您的第一个脚本不是一个好主意,因为您将遇到多个问题。谷歌嗅探用户代理,并将根据它给你一个不同的网站。此外,还将考虑视口大小。我建议您先从example.org开始,然后再从stackoverflow.com开始,因为两者的表现都相当不错