nightmarejsを使用してボタンを何度もクリックできるスクリプトを作成しようとしています。これは、コメントセクションの一番下にあるyoutubeボタンのように、 (例:youtube.com/watch?v=pZISJqJbQuU & list = RDpZISJqJbQuU#t = 3)、クリックするボタンがなくなると停止します。NightmareJSの非同期性の問題
評価を呼び出そうとしましたが、end()メソッドが最初に呼び出され、プロセスがキャンセルされました。私はsetTimeout、setInterval、then()を使ってループを再帰的に変換しようとしました。 evaluate()のいずれかが終了すると、その仕事は終了しますが、終了(終了)しないか、end()の競合条件のために仕事を完了する前に終了します。
経験豊富なnightmarejsユーザーがいますか?
function youtube_button_clicker(group) {
var nightmare = Nightmare({
show: true
});
nightmare
.goto(url)
.inject('js', 'jquery-3.1.0.js')
.then(
() => nightmare.
evaluate(function() {
for (i=0;i>LEN;i++)
{ setTimeout(() => { $(button_element).click() }, i * 2000); }
return "done"
}))
.catch(function (error) {
console.error('Search failed:', error);
});
}
、.END()メソッドを削除し、それがハング再び)(.ENDを入れて、それが処理をスキップ - 早期終了します。私に何ができる ?
あなた 'する必要がsetTimeouts'約束事に包まれていれば、あなたは 'promise.all'する必要があります。すべてが完了したときにイベントを受け取れば、' all'によって返された約束を 'then'に渡す必要があります。 'それは適切に – slebetman
あなたは私にコード例を見せてもらえますか? – RetroCode