Я пытаюсь выяснить, как сделать скрипт щелкнуть ссылку и перейти на какую-либо страницу, а затем выполнить какое-то действие. Вот пример того, что я застрял, что не работает.Nightmare.js - функция щелчка AddEventListener не будет выполнена
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' после' оценки' не правильно дождаться загрузки страницы, правильно? –
@ artjom-b Я думаю, что это именно то, что происходит. Потому что я получаю «результат null» в терминале. Как это исправить? – Plavookac
Вы получаете результат «null», потому что вы никогда ничего не возвращаете. –