Clock
準確地模擬時間相關的行為對於驗證應用程式的正確性至關重要。深入了解時鐘模擬。
請注意,時鐘是為整個 BrowserContext 安裝的,因此所有頁面和 iframe 中的時間都由同一個時鐘控制。
方法
fastForward
Added in: v1.45透過跳躍時間前進來推進時鐘。只會觸發到期的計時器最多一次。這相當於使用者關閉筆記型電腦螢幕一段時間,然後在給定的時間後重新開啟。
用法
await page.clock.fastForward(1000);
await page.clock.fastForward('30:00');
引數
-
時間可以是推進時鐘的毫秒數,或是人類可讀的字串。有效的字串格式為「08」(八秒)、「01:00」(一分鐘)和「02:34:10」(兩小時 34 分 10 秒)。
回傳
install
Added in: v1.45為以下時間相關的函式安裝偽造實作
Date
setTimeout
clearTimeout
setInterval
clearInterval
requestAnimationFrame
cancelAnimationFrame
requestIdleCallback
cancelIdleCallback
performance
偽造計時器用於手動控制測試中的時間流逝。它們允許您推進時間、觸發計時器,以及控制時間相關函式的行為。請參閱 clock.runFor() 和 clock.fastForward() 以取得更多資訊。
用法
await clock.install();
await clock.install(options);
引數
回傳
pauseAt
Added in: v1.45透過跳躍時間前進來推進時鐘並暫停時間。一旦呼叫此方法,除非呼叫 clock.runFor()、clock.fastForward()、clock.pauseAt() 或 clock.resume(),否則不會觸發任何計時器。
只會觸發到期的計時器最多一次。這相當於使用者關閉筆記型電腦螢幕一段時間,然後在指定時間重新開啟並暫停。
用法
await page.clock.pauseAt(new Date('2020-02-02'));
await page.clock.pauseAt('2020-02-02');
為了獲得最佳效果,請在導覽頁面之前安裝時鐘,並將其設定為略早於預期測試時間的時間。這可確保所有計時器在頁面載入期間正常執行,防止頁面卡住。頁面完全載入後,您可以安全地使用 clock.pauseAt() 來暫停時鐘。
// Initialize clock with some time before the test time and let the page load
// naturally. `Date.now` will progress as the timers fire.
await page.clock.install({ time: new Date('2024-12-10T08:00:00') });
await page.goto('https://127.0.0.1:3333');
await page.clock.pauseAt(new Date('2024-12-10T10:00:00'));
引數
回傳
resume
Added in: v1.45恢復計時器。一旦呼叫此方法,時間會恢復流逝,計時器會照常觸發。
用法
await clock.resume();
回傳
runFor
Added in: v1.45推進時鐘,觸發所有時間相關的回呼。
用法
await page.clock.runFor(1000);
await page.clock.runFor('30:00');
引數
-
時間可以是推進時鐘的毫秒數,或是人類可讀的字串。有效的字串格式為「08」(八秒)、「01:00」(一分鐘)和「02:34:10」(兩小時 34 分 10 秒)。
回傳
setFixedTime
Added in: v1.45使 Date.now
和 new Date()
始終回傳固定的偽造時間,保持所有計時器運作。
對於只需要使用預定義時間進行測試的簡單情境,請使用此方法。對於更進階的情境,請改用 clock.install()。請閱讀關於時鐘模擬的文件以了解更多資訊。
用法
await page.clock.setFixedTime(Date.now());
await page.clock.setFixedTime(new Date('2020-02-02'));
await page.clock.setFixedTime('2020-02-02');
引數
回傳
setSystemTime
Added in: v1.45設定系統時間,但不觸發任何計時器。使用此功能來測試網頁對時間偏移的反應,例如從夏季切換到冬季時間,或變更時區。
用法
await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02');
引數
回傳