2012-08-08 25 views

cevap

71

Çünkü sen Casperjleri ve uzak sayfa ortamlarını karıştırıyorum. evaluate işlevi, uzak sayfa env içinde kod yürütür, böylece console.log çağrısı hiçbir şey çıkmaz. Eğer remote.message olayı dinlemek, uzakconsole.log çağrıları yakalamak istiyorsan

:

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

Btw, documentation for events hemen hemen eksiksiz yanı the one for evaluate gibidir.

+1

'setTimeout''' olan OP'nin örnekleri arasındaki fark. Bu 'setTimeout' 'bunu nasıl değiştirir? ikisi de uzak ortamda yürütülmektedir. –

+0

@nikkwong OP, ne anlama geldiğini belirmediğinden * "işe yarıyor" * ve * "çalışmıyor" *, sadece tahmin edebiliriz. CasperJS'in kontrol akışından ayrıldığını ve bu nedenle de 'casper' kontrol akışında da beklediklerini fark etmediklerini düşünürdüm. Muhtemelen çok erken çıkmışlar. OP'nin faaliyetine rağmen bunun altına gidebileceğimizden şüphe ediyorum. –

+0

FYI - linkler bozuldu – evolutionxbox

20

@ NiKo'nun yanıtı çok önemlidir.

Ayrıca, bir hata varsa, bir konsol.log() msg ​​yazdırmak ve bunun yerine sessizlikle sona erdirmek için yeterince yapamayacağınız için, aşağıdakileri eklemenizi de öneririm. casperjs daha ölmek

__utils__.echo('This message is logged from the remote page to the CasperJS console'); 
10

CasperJS kolayca Casper script konsoluna oturum açmak için uzaktan sayfadan kullanılabilir ClientUtils içerir bilinen hata/StackTrace:

var util = require('util'); 

casper.on('page.error', function exitWithError(msg, stack) { 
    stack = stack.reduce(function (accum, frame) { 
     return accum + util.format('\tat %s (%s:%d)\n', 
      frame.function || '<anonymous>', 
      frame.file, 
      frame.line 
     ); 
    }, ''); 
    this.die(['Client-side error', msg, stack].join('\n'), 1); 
}); 
5

Bina @ odigity cevabı üzerine, bu yapar:

casper.on('page.error', function (msg, trace) { 
    this.echo('Error: ' + msg, 'ERROR'); 
}); 
+1

Fantastik! Bugün de böyle bir şey arıyordum. Yardımcı modül olsa ut utils' olmalıdır? – Qcom

+0

@Qcom, Sanırım 'utils' iyi olurdu, çünkü [_'sprintf' equal_] (http://casperjs.readthedocs.org/en/latest/modules/utils.html#format). Kullanmakta olduğum yerde zaten ['util'] (https://www.npmjs.com/package/util) vardı, bu yüzden onu kullandım :) – c24w

+0

İlginç, SpookyJS üzerinden düğüm ile birlikte casper kullanıyor musunuz? veya esdeger? Benim bilgi casper için varsayılan olarak düğüm modülü ekosistemi ile entegre değildir. – Qcom

İlgili konular