簡體   English   中英

如果 console.log 禁用,則登錄 casper.js

[英]Logging in casper.js if console.log disable

以下使用casper.js代碼不輸出This is thenEvaluate string 因為Twitter.com禁用了console.log (空函數):

var casper = require('casper').create({
    verbose: false,
    logLevel: 'debug'
});

casper.start("http://twitter.com");

casper.on('remote.message', function(msg) {
    this.echo('remote message caught: ' + msg);
})

casper.thenEvaluate(function() {
    console.log('This is thenEvaluate');
});

casper.run();

如果我將url交換到google.com或任何其他網站,它就可以工作。 我的問題是:

  1. 對於網站禁用console.log ,有沒有辦法重新啟用它?

  2. 如果 #1 為 NO,有沒有辦法在evaluate()thenEvaluate()函數中做任何類型的日志?

謝謝。

我在這里找到了關於恢復 console.log()的答案

var i = document.createElement('iframe');
i.style.display = 'none';
document.body.appendChild(i);
window.console = i.contentWindow.console;

只需刪除console對象的log屬性:

>>> console.log('plop')
undefined
>>> delete console.log
true
>>> console.log('plop')
plop
undefined

這可以給 casper:

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.log 效果附加到 DOM,然后您可以輸出文本。 我在 Github 上有一個 Gist,我已經在這樣的情況下實現了類似的東西: https : //gist.github.com/3773871

如果您只是將該代碼調用到您的程序中,則可以使用

assert(true, 'This is thenEvaluate()')

顯然,您並沒有真正使用它作為正確的斷言,但是如果您只是傳入 true 和一個字符串並調用它來代替您的控制台日志,它會將您的結果輸出到屏幕右上角的絕對定位元素用於閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM