Я пытаюсь понять, как сделать скрипт щелкнуть ссылку и перейти на какую-то страницу, а затем выполнить какое-то действие. Вот пример, с которым я застрял, это не работает.
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
nightmare
.goto("https://www.google.com/")
.type("input", "nightmare.js")
.wait(3000)
.click("button[type=submit]")
.wait(2000)
.evaluate(function(){
var title = document.querySelectorAll("h3 a");
i = 0;
if (title) {
title[i].addEventListener("click", function(){
setTimeout(function(){
alert("Success!");
}, 5000);
});
}
})
.then(function(result){
console.log("result", result);
})
.catch(function (error) {
console.error('Search failed:', error);
});
Как видите, он даже не переходит на следующую страницу.
Но если я определю щелчок таким образом, он перейдет на следующую страницу, но мне нужно, чтобы он выполнял какую-то функцию и на этой другой странице:
.evaluate(function(){
var title = document.querySelectorAll("h3 a");
i = 0;
if (title) {
title[i].click();
}
})
Так что это смущает меня, не знаю, почему это не сработает.
addEventListener
добавляет прослушиватель событий, но на самом деле не щелкает, потому что это немедленно вызовет событие, что может привести к путанице. Кажется, ваша проблема в том, чтоthen
послеevaluate
неправильно ожидает загрузки страницы, верно? - person Artjom B.   schedule 25.08.2016null
, потому что вы никогда ничего не возвращаете. - person Artjom B.   schedule 26.08.2016