跳到主要內容

Clock

精確地模擬時間相關的行為對於驗證應用程式的正確性至關重要。深入瞭解時鐘模擬

請注意,時鐘是為整個BrowserContext 安裝的,因此所有頁面和 iframe 中的時間都由同一個時鐘控制。


方法

fast_forward

新增於:v1.45 clock.fast_forward

透過向前跳躍時間來推進時鐘。只會最多觸發一次到期的計時器。這相當於使用者暫時關閉筆記型電腦螢幕,然後在給定的時間後重新開啟。

用法

page.clock.fast_forward(1000)
page.clock.fast_forward("30:00")

引數

  • ticks int | str#

    時間可以是推進時鐘的毫秒數,也可以是人類可讀的字串。有效的字串格式為「08」(八秒)、「01:00」(一分鐘)和「02:34:10」(兩小時 34 分 10 秒)。

回傳


install

新增於:v1.45 clock.install

為以下與時間相關的函式安裝偽造的實作

  • Date
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • performance

偽造的計時器用於手動控制測試中的時間流程。它們允許您推進時間、觸發計時器,以及控制時間相關函式的行為。請參閱 clock.run_for()clock.fast_forward() 以取得更多資訊。

用法

clock.install()
clock.install(**kwargs)

引數

  • time float | str | datetime (選用)#

    要初始化的時間,預設為目前的系統時間。

回傳


pause_at

新增於:v1.45 clock.pause_at

透過向前跳躍時間來推進時鐘並暫停時間。一旦呼叫此方法,除非呼叫 clock.run_for()clock.fast_forward()clock.pause_at()clock.resume(),否則不會觸發任何計時器。

只會最多觸發一次到期的計時器。這相當於使用者暫時關閉筆記型電腦螢幕,然後在指定時間重新開啟並暫停。

用法

page.clock.pause_at(datetime.datetime(2020, 2, 2))
page.clock.pause_at("2020-02-02")

為了獲得最佳效果,請在導覽頁面之前安裝時鐘,並將其設定為略早於預期測試時間的時間。這可確保所有計時器在頁面載入期間正常執行,防止頁面卡住。一旦頁面完全載入,您就可以安全地使用 clock.pause_at() 來暫停時鐘。

# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 12, 10, 8, 0, 0))
page.goto("https://127.0.0.1:3333")
page.clock.pause_at(datetime.datetime(2024, 12, 10, 10, 0, 0))

引數

回傳


resume

新增於:v1.45 clock.resume

繼續計時器。一旦呼叫此方法,時間將恢復流動,計時器將照常觸發。

用法

clock.resume()

回傳


run_for

新增於:v1.45 clock.run_for

推進時鐘,觸發所有與時間相關的回呼。

用法

page.clock.run_for(1000);
page.clock.run_for("30:00")

引數

  • ticks int | str#

    時間可以是推進時鐘的毫秒數,也可以是人類可讀的字串。有效的字串格式為「08」(八秒)、「01:00」(一分鐘)和「02:34:10」(兩小時 34 分 10 秒)。

回傳


set_fixed_time

新增於:v1.45 clock.set_fixed_time

使 Date.nownew Date() 始終回傳固定的偽造時間,並保持所有計時器運作。

對於只需要使用預先定義的時間進行測試的簡單情境,請使用此方法。對於更進階的情境,請改用 clock.install()。請閱讀關於 時鐘模擬 的文件以瞭解更多資訊。

用法

page.clock.set_fixed_time(datetime.datetime.now())
page.clock.set_fixed_time(datetime.datetime(2020, 2, 2))
page.clock.set_fixed_time("2020-02-02")

引數

回傳


set_system_time

新增於:v1.45 clock.set_system_time

設定系統時間,但不觸發任何計時器。使用此功能來測試網頁對時間偏移的反應,例如從夏季切換到冬季時間,或變更時區。

用法

page.clock.set_system_time(datetime.datetime.now())
page.clock.set_system_time(datetime.datetime(2020, 2, 2))
page.clock.set_system_time("2020-02-02")

引數

回傳