1
以下のJavascriptはNightmareJSを使用して3つの投稿をウェブサイトから検索し、投稿をアップロードしたユーザーのユーザー名を返すことを意図しています。何らかの理由でNightmareJSを使用しているときに複数のクエリを作成するにはどうすればよいですか?
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
var inputArray = [198,199,201];
var runNext = function (i) {
nightmare
.goto('http://theshitpit.com/goto.php')
.insert('form [name=postnum]', i)
.click('form [type=submit]')
.wait()
.evaluate(function() {
return document.querySelector('.username').innerHTML
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});
}
var index = 0;
while(index<inputArray.length){
runNext(inputArray[index]);
index++;
}
、コマンドプロンプトで実行する場合、このコードは次のように出力します
Search failed {}
Search failed {}
私は、これが動作しない理由を理解するために苦労してきました。私はrunNext(inputArray[0])
を使用して特定の投稿のために1回だけ実行するために、このコードを(whileループなしで)使ってみましたが、これはうまくいきます。ですから、複数の投稿についての情報を得るためにwhileループを追加しようとすると、なぜそれは機能しませんか?
こんにちは、あなたの助けに感謝します。私はこのように動作するように自分のコードを更新しましたが、チェックされた最初の投稿のユーザ名 - 1つのユーザ名だけが返されます。どんな考え? –
申し訳ありません、前にナイトメアで働いたことがない、編集するためにドキュメントをチェックしなければなりませんでした。試して、働いている更新された答えを見てください。 '.end()'メソッドはプロセスをシャットダウンするためのもので、削除する必要があると思われます。別のメソッド '.halt()'が最後に終了するように追加されました。 – Vaviloff