跳至主要内容

Clock 对象

您可以使用emulate 命令修改浏览器系统时钟。它会覆盖与时间相关的原生全局函数,允许通过clock.tick() 或生成的 clock 对象同步控制它们。这包括控制

  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • 日期对象

时钟从 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