跳至主要內容

時鐘物件

您可以使用 emulate 命令修改瀏覽器系統時鐘。它會覆蓋與時間相關的原生全域函數,使其能夠透過 clock.tick() 或產生時鐘物件同步控制。這包括控制

  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • Date 物件

時鐘從 Unix 紀元(時間戳記為 0)開始。這表示當您在應用程式中實例化新的 Date 時,如果您沒有將任何其他選項傳遞給 emulate 命令,它的時間將為 1970 年 1 月 1 日。

範例

當呼叫 browser.emulate('clock', { ... }) 時,它會立即覆蓋目前頁面以及所有後續頁面的全域函數,例如:

const clock = await browser.emulate('clock', { now: new Date(1989, 7, 4) })

console.log(await browser.execute(() => (new Date()).toString()))
// returns "Fri Aug 04 1989 00:00:00 GMT-0700 (Pacific Daylight Time)"

await browser.url('https://webdriverio')
console.log(await browser.execute(() => (new Date()).toString()))
// returns "Fri Aug 04 1989 00:00:00 GMT-0700 (Pacific Daylight Time)"

await clock.restore()

console.log(await browser.execute(() => (new Date()).toString()))
// returns "Thu Aug 01 2024 17:59:59 GMT-0700 (Pacific Daylight Time)"

await browser.url('http://guinea-pig.webdriver.io/pointer.html')
console.log(await browser.execute(() => (new Date()).toString()))
// returns "Thu Aug 01 2024 17:59:59 GMT-0700 (Pacific Daylight Time)"

您可以透過呼叫 setSystemTimetick 來修改系統時間。

歡迎!我能為您做些什麼?

WebdriverIO AI Copilot