跳至主要内容

时钟

准确模拟时间相关行为对于验证应用程序的正确性至关重要。 了解有关 时钟模拟 的更多信息。

请注意,时钟是在整个 浏览器上下文 中安装的,因此所有页面和 iframe 中的时间都由同一个时钟控制。


方法

fastForward

添加于:v1.45 clock.fastForward

通过在时间上跳跃向前来推进时钟。 最多只触发一次到期计时器。 这相当于用户关闭笔记本电脑盖一段时间,然后在给定时间后重新打开它。

用法

await page.clock.fastForward(1000);
await page.clock.fastForward('30:00');

参数

  • ticks 数字 | 字符串#

    时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。 有效的字符串格式为“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时、34 分钟和十秒。

返回值


install

添加于:v1.45 clock.install

为以下时间相关函数安装假实现

  • 日期
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • 表现

假计时器用于手动控制测试中时间的流逝。 它们允许您推进时间、触发计时器和控制时间相关函数的行为。 有关更多信息,请参阅 clock.runFor()clock.fastForward()

用法

await clock.install();
await clock.install(options);

参数

  • options 对象 (可选)
    • time 数字 | 字符串 | [日期] (可选)#

      初始化时间,默认情况下为当前系统时间。

返回值


pauseAt

添加于:v1.45 clock.pauseAt

通过在时间上跳跃向前来推进时钟并暂停时间。 一旦调用此方法,除非调用 clock.runFor()clock.fastForward()clock.pauseAt()clock.resume(),否则不会触发任何计时器。

最多只触发一次到期计时器。 这相当于用户关闭笔记本电脑盖一段时间,然后在指定时间重新打开它并暂停。

用法

await page.clock.pauseAt(new Date('2020-02-02'));
await page.clock.pauseAt('2020-02-02');

参数

返回值


resume

添加于:v1.45 clock.resume

恢复计时器。 一旦调用此方法,时间就会恢复流逝,计时器会照常触发。

用法

await clock.resume();

返回值


runFor

添加于:v1.45 clock.runFor

推进时钟,触发所有与时间相关的回调。

用法

await page.clock.runFor(1000);
await page.clock.runFor('30:00');

参数

  • ticks 数字 | 字符串#

    时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。 有效的字符串格式为“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时、34 分钟和十秒。

返回值


setFixedTime

添加于:v1.45 clock.setFixedTime

使 Date.nownew Date() 在任何时候都返回固定的假时间,保持所有计时器运行。

用法

await page.clock.setFixedTime(Date.now());
await page.clock.setFixedTime(new Date('2020-02-02'));
await page.clock.setFixedTime('2020-02-02');

参数

返回值


setSystemTime

添加于:v1.45 clock.setSystemTime

设置当前系统时间,但不触发任何计时器。

用法

await page.clock.setSystemTime(Date.now());
await page.clock.setSystemTime(new Date('2020-02-02'));
await page.clock.setSystemTime('2020-02-02');

参数

返回值