私はスクリプトを作成する方法を理解しようとしていますリンクをクリックしていくつかのページに行き、何らかのアクションを実行します。ここに私がついている例がありますが、それはうまくいきません。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私はそれがまさに何が起こると思います。なぜなら私は端末で "result null"を取得するからです。それを修正するには? – Plavookac
あなたは何も返さないので、あなたは 'null'の結果を得ます。 –