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();
  }
})

Так что это смущает меня, не уверен, почему это не сработает.

1 ответ

Хорошо, я думаю, что главная проблема в том, как вы пытаетесь нажать на эту ссылку. Прямо сейчас вы делаете это вне основного потока ночных кошмаров .goto().type().wait()... цепочка). Если вы измените поток для работы с цепочкой, и используйте .click() опять вместо .evaluate()Вы можете выполнить действие на следующей странице:

nightmare
.goto("https://www.google.com/")
.type("input", "nightmare.js")
.wait(3000)
.click("button[type=submit]")
.wait("h3[class=r]")
.click("h3[class=r] a")
.evaluate(function(){
  return document.querySelector("h1 a").innerHTML
})
.end()
.then(function(result){
    console.log("result", result);
})
.catch(function (error) {
    console.error('Search failed:', error);
});

и это выводит контент со ссылкой на страницу Кошмара <h1></h1> тег, который является "Кошмар"

Другие вопросы по тегам