Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果console.log禁用,则登录casper.js_Javascript_Firefox_Webkit_Phantomjs_Casperjs - Fatal编程技术网

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();