0

ヘッドレス ブラウジングに NightmareJS を使用しています。私のコードは次のようになります。

var Nightmare = require('nightmare');
var google = new Nightmare()
    .goto('http://www.google.com')
    .wait(3000)
    .inject('js', 'jquery.min.js')
    .screenshot('screenshot.png')
    .evaluate(function(){
        return $('#footer').html();
    }, function(value){
        console.log(value);
    })
    .run(function(err){
        console.log('All done!');
    });

を使用して DOM 要素を頻繁にデバッグする必要がありますconsole.log。ただし、.evaluateブロックconsole.log内では機能しないようです。

.evaluate内のものをコンソールに記録するにはどうすればよいですか?

4

2 に答える 2

0

console.log()ページ コンテキスト内 ( 内evaluate()) で正常に動作しますが、リッスンする必要があります。

new Nightmare()
    .on("consoleMessage", function(msg){
        console.log("remote> " + msg);
    })
    .goto('http://www.google.com')
    .evaluate(function(){
        console.log($('#footer').html());
    }, function(){})
    ...

お気に入りのブラウザーの開発者ツールのように、DOM ノードをコンソールに完全に出力することはできないことに注意してください。それは多すぎるでしょう。自分で構築する必要がある DOM ノードの表現を印刷する必要があります。

PhantomJS が提供する他のすべてのイベントを同じ方法で使用することもできますが、これは 2.x より前のバージョンの Nightmare でのみ機能します。バージョン 2.x 以降では、PhantomJS ではなく、基盤となるブラウザーとして Electron が使用されるためです。

于 2015-12-19T11:14:06.657 に答える