控制Puppeteer 中的執行流程:實現延遲和暫停
在Puppeteer 中,經常需要暫停或延遲執行,然後再繼續後續操作程式碼行。這對於與網頁同步或有效模擬使用者互動至關重要。
一種常見的方法是使用 JavaScript 的 setTimeout 函數,該函數將回調和時間間隔作為參數。但是,如提供的程式碼片段所示,此方法無法在 Puppeteer 的上下文中實現預期結果。
解決方案涉及利用基於 Promise 的方法。一種方法是定義一個延遲函數:
function delay(time) { return new Promise(function(resolve) { setTimeout(resolve, time) }); }
透過呼叫函數,在執行流程中引入指定時長的延遲:
console.log('before waiting'); await delay(4000); console.log('after waiting');
Puppeteer 也提供了一個內建的- in waitForTimeout 函數提供暫停持續時間的直接控制:
await page.waitForTimeout(4000)
此外,如果仍然希望使用page.evaluate 來引入延遲,那麼確保回呼函數在期望的間隔:
await page.evaluate(async() => { await new Promise(function(resolve) { setTimeout(resolve, 1000) }); });
透過實現這些延遲技術,您可以有效地控制Puppeteer 中的執行流程,確保與網頁的正確同步和真實互動。
以上是如何在 Puppeteer 執行流程中引入延遲和暫停?的詳細內容。更多資訊請關注PHP中文網其他相關文章!