我想弄清楚如何使腳本點擊鏈接並轉到某個頁面,然後執行一些操作。這是我堅持的例子,這是行不通的。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'增加了一個事件監聽器,但實際上並沒有點擊,因爲這會立即觸發事件,這將會非常混亂。看來你的問題是'evaluate'後面的'then'沒有正確地等待頁面加載,對吧? –
@ artjom-b我認爲這正是發生的事情。因爲我在終端得到「結果爲空」。如何解決這個問題? – Plavookac
你得到'null'的結果,因爲你永遠不會返回任何東西。 –