Le Javascript ci-dessous est destiné à utiliser NightmareJS pour rechercher un site Web pour 3 messages et retourner le nom d'utilisateur de celui qui a téléchargé la publication.Comment faire plusieurs requêtes en utilisant 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++;
}
Pour une raison quelconque, ce code donne les résultats suivants lors de l'exécution dans l'invite de commande:
Search failed {}
Search failed {}
J'ai du mal à comprendre pourquoi cela ne fonctionne pas. J'ai essayé d'utiliser ce code (sans la boucle while) pour exécuter une seule fois pour un post spécifique, en utilisant runNext(inputArray[0])
et cela fonctionne très bien. Donc, quand j'essaie d'ajouter une boucle while pour obtenir des informations sur plusieurs messages, pourquoi cela ne fonctionne-t-il pas?
Salut, merci pour votre aide. J'ai mis à jour mon code pour fonctionner de cette manière, mais il ne renvoie que le nom d'utilisateur 1 - le nom d'utilisateur pour le premier post vérifié. Une idée pourquoi? –
Désolé, jamais travaillé avec Nightmare auparavant, a dû vérifier les docs à éditer. Voir la réponse mise à jour, essayé et fonctionne. On dirait que la méthode '.end()' sert à arrêter le processus et a dû être supprimée. Une autre méthode, '.halt()' ajouté à la sortie à la fin. – Vaviloff