时钟
准确模拟时间相关行为对于验证应用程序的正确性至关重要。了解更多关于时钟模拟的信息。
请注意,时钟是为整个BrowserContext安装的,因此所有页面和iframe中的时间都由同一个时钟控制。
方法
fastForward
新增于: v1.45通过跳跃式前进时间来提前时钟。最多只触发一次到期计时器。这相当于用户合上笔记本电脑盖子一段时间后,在给定时间后重新打开。
用法
page.clock().fastForward(1000);
page.clock().fastForward("30:00");
参数
-
时间可以是提前时钟的毫秒数,也可以是人类可读的字符串。有效的字符串格式是“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时,34 分钟和十秒。
返回
install
新增于: v1.45为以下时间相关函数安装假的实现
Date
setTimeout
clearTimeout
setInterval
clearInterval
requestAnimationFrame
cancelAnimationFrame
requestIdleCallback
cancelIdleCallback
performance
假计时器用于手动控制测试中的时间流。它们允许您推进时间、触发计时器和控制时间相关函数的行为。有关更多信息,请参阅Clock.runFor()和Clock.fastForward()。
用法
Clock.install();
Clock.install(options);
参数
返回
pauseAt
新增于: v1.45通过时间跳跃来推进时钟并暂停时间。一旦调用此方法,除非调用Clock.runFor()、Clock.fastForward()、Clock.pauseAt()或Clock.resume(),否则不会触发计时器。
最多只触发一次到期计时器。这相当于用户合上笔记本电脑盖子一段时间,然后在指定时间重新打开并暂停。
用法
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd");
page.clock().pauseAt(format.parse("2020-02-02"));
page.clock().pauseAt("2020-02-02");
为了获得最佳结果,请在导航页面之前安装时钟,并将其设置为比预期测试时间稍早的时间。这确保了在页面加载期间所有计时器正常运行,防止页面卡住。一旦页面完全加载,您可以安全地使用Clock.pauseAt()来暂停时钟。
// Initialize clock with some time before the test time and let the page load
// naturally. `Date.now` will progress as the timers fire.
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd'T'HH:mm:ss");
page.clock().install(new Clock.InstallOptions().setTime(format.parse("2024-12-10T08:00:00")));
page.navigate("https://:3333");
page.clock().pauseAt(format.parse("2024-12-10T10:00:00"));
参数
返回
resume
新增于: v1.45恢复计时器。一旦调用此方法,时间将恢复流动,计时器将照常触发。
用法
Clock.resume();
返回
runFor
新增于: v1.45提前时钟,触发所有时间相关的回调。
用法
page.clock().runFor(1000);
page.clock().runFor("30:00");
参数
-
时间可以是提前时钟的毫秒数,也可以是人类可读的字符串。有效的字符串格式是“08”表示八秒,“01:00”表示一分钟,“02:34:10”表示两小时,34 分钟和十秒。
返回
setFixedTime
新增于: v1.45使Date.now
和new Date()
始终返回固定的假时间,并保持所有计时器运行。
此方法适用于只需要在预定义时间进行测试的简单场景。对于更高级的场景,请使用Clock.install()。阅读时钟模拟文档以了解更多信息。
用法
page.clock().setFixedTime(new Date());
page.clock().setFixedTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setFixedTime("2020-02-02");
参数
返回
setSystemTime
新增于: v1.45设置系统时间,但不触发任何计时器。使用此功能测试网页对时间偏移的反应,例如从夏令时切换到冬令时,或更改时区。
用法
page.clock().setSystemTime(new Date());
page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setSystemTime("2020-02-02");
参数
返回