时钟
准确模拟依赖时间的行为对于验证应用程序的正确性至关重要。了解有关时钟模拟的更多信息。
请注意,时钟是为整个浏览器上下文安装的,因此所有页面和 iframe 中的时间都由同一个时钟控制。
方法
FastForwardAsync
新增于:v1.45通过在时间线上向前跳跃来推进时钟。最多只触发一次到期的计时器。这相当于用户关闭笔记本电脑盖子一段时间,然后在给定时间后重新打开它。
用法
await page.Clock.FastForwardAsync(1000);
await page.Clock.FastForwardAsync("30:00");
参数
-
时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。有效的字符串格式为“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时 34 分钟 10 秒。
返回值
InstallAsync
新增于:v1.45为以下与时间相关的函数安装模拟实现
日期
setTimeout
clearTimeout
setInterval
clearInterval
requestAnimationFrame
cancelAnimationFrame
requestIdleCallback
cancelIdleCallback
performance
模拟计时器用于手动控制测试中的时间流逝。它们允许您推进时间、触发计时器以及控制依赖时间函数的行为。有关更多信息,请参阅Clock.RunForAsync() 和Clock.FastForwardAsync()。
用法
await Clock.InstallAsync(options);
参数
返回值
PauseAtAsync
新增于:v1.45通过在时间线上向前跳跃来推进时钟并暂停时间。一旦调用此方法,除非调用Clock.RunForAsync()、Clock.FastForwardAsync()、Clock.PauseAtAsync() 或Clock.ResumeAsync(),否则不会触发任何计时器。
最多只触发一次到期的计时器。这相当于用户关闭笔记本电脑盖子一段时间,然后在指定时间重新打开并暂停。
用法
await page.Clock.PauseAtAsync(DateTime.Parse("2020-02-02"));
await page.Clock.PauseAtAsync("2020-02-02");
参数
返回值
ResumeAsync
新增于:v1.45恢复计时器。一旦调用此方法,时间就会恢复流动,计时器会照常触发。
用法
await Clock.ResumeAsync();
返回值
RunForAsync
新增于:v1.45推进时钟,触发所有与时间相关的回调。
用法
await page.Clock.RunForAsync(1000);
await page.Clock.RunForAsync("30:00");
参数
-
时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。有效的字符串格式为“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时 34 分钟 10 秒。
返回值
SetFixedTimeAsync
新增于:v1.45使Date.now
和new Date()
始终返回固定的模拟时间,并保持所有计时器运行。
用法
await page.Clock.SetFixedTimeAsync(DateTime.Now);
await page.Clock.SetFixedTimeAsync(new DateTime(2020, 2, 2));
await page.Clock.SetFixedTimeAsync("2020-02-02");
参数
返回值
SetSystemTimeAsync
新增于:v1.45设置当前系统时间,但不触发任何计时器。
用法
await page.Clock.SetSystemTimeAsync(DateTime.Now);
await page.Clock.SetSystemTimeAsync(new DateTime(2020, 2, 2));
await page.Clock.SetSystemTimeAsync("2020-02-02");
参数
返回值