Javascript 如果console.log禁用,则登录casper.js
使用Javascript 如果console.log禁用,则登录casper.js,javascript,firefox,webkit,phantomjs,casperjs,Javascript,Firefox,Webkit,Phantomjs,Casperjs,使用casper.js的以下代码不会输出这是评估字符串,因为Twitter.com禁用了console.log(空函数): 如果我将url切换到google.com或任何其他网站,它就可以正常工作。我的问题是: 对于已禁用的网站console.log,是否有重新启用的方法 如果#1为否,是否有办法在evaluate()或thenEvaluate()函数中执行任何类型的日志 谢谢。 您可能想考虑构建一个断言小部件,它将向DOM追加一种可视控制台。日志效果,然后您可以输出文本。我对Github有一个
casper.js
的以下代码不会输出这是评估字符串,因为Twitter.com禁用了console.log
(空函数):
如果我将url切换到google.com或任何其他网站,它就可以正常工作。我的问题是:
对于已禁用的网站console.log
,是否有重新启用的方法
如果#1为否,是否有办法在evaluate()
或thenEvaluate()
函数中执行任何类型的日志
谢谢。
您可能想考虑构建一个断言小部件,它将向DOM追加一种可视控制台。日志效果,然后您可以输出文本。我对Github有一个要点,在这种情况下我实现了类似的东西:
如果您只是将该代码调用到您的程序中,您可以使用
assert(true, 'This is thenEvaluate()')
显然,您并没有真正将其用作正确的断言,但如果您只是传入true和一个字符串并调用它来代替控制台日志,它会将您的结果输出到屏幕右上角的绝对定位元素以供阅读。我在这里找到了关于
只需删除console
对象的log
属性:
>>> console.log('plop')
undefined
>>> delete console.log
true
>>> console.log('plop')
plop
undefined
这可能会给卡斯珀带来:
var casper = require('casper').create();
casper.start("http://twitter.com");
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.thenEvaluate(function() {
delete console.log;
console.log('This is thenEvaluate');
});
casper.run();
免责声明:答案是,应该相应地归功于原始作者。这不是一个特别的解决方案,但可以尝试使用console.info-我曾经在一些服务器上工作过,这些服务器禁用了console.log,但忘记了console.info(在Firefox中工作得很好)Twitter.com没有忘记禁用console.info:P,但是你确定没有办法调试或登录这样的网站吗?现在我只能做capture()和view.png,这很痛苦。我刚才用casper.js和一个被禁用的console.log网站尝试过,但没有用。代码似乎只是在DOM中插入了一些元素,最后仍然使用console.log。我想知道是否有办法获得原始console.log函数的代码?嘿,HP-它将向DOM插入元素,它将创建控制台日志,但它也会向插入的DOM元素添加一些文本,就像您在屏幕截图中看到的那样。如果console.log被禁用,这意味着Twitter JS文件中有一些代码正在将函数重新定义为空函数。实际的console.log代码可能是本机代码-我四处查看,找不到原始代码。哈哈-这很流畅。很高兴你找到了
>>> console.log('plop')
undefined
>>> delete console.log
true
>>> console.log('plop')
plop
undefined
var casper = require('casper').create();
casper.start("http://twitter.com");
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.thenEvaluate(function() {
delete console.log;
console.log('This is thenEvaluate');
});
casper.run();