[英]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或任何其他網站,它就可以工作。 我的問題是:
對於網站禁用console.log
,有沒有辦法重新啟用它?
如果 #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.