時計
時間依存の動作を正確にシミュレートすることは、アプリケーションの正確性を検証するために不可欠です。クロックエミュレーションについて詳しく学びましょう。
クロックはBrowserContext全体にインストールされるため、すべてのページとiframeの時間は同じクロックによって制御されることに注意してください。
メソッド
fast_forward
追加されたバージョン: v1.45時間を早送りしてクロックを進めます。期限切れのタイマーは最大1回だけ発火します。これは、ユーザーがしばらくノートパソコンの蓋を閉めて、指定された時間後に再び開くのと同等です。
使用法
- 同期
- 非同期
page.clock.fast_forward(1000)
page.clock.fast_forward("30:00")
await page.clock.fast_forward(1000)
await page.clock.fast_forward("30:00")
引数
-
時間は、クロックを進めるミリ秒数、または人間が判読できる文字列のいずれかです。有効な文字列形式は、8秒の場合は「08」、1分の場合は「01:00」、2時間34分10秒の場合は「02:34:10」です。
戻り値
install
追加されたバージョン: v1.45以下の時間関連関数の偽の実装をインストールします
DatesetTimeoutclearTimeoutsetIntervalclearIntervalrequestAnimationFramecancelAnimationFramerequestIdleCallbackcancelIdleCallbackperformance
フェイクタイマーは、テストの時間経過を手動で制御するために使用されます。これにより、時間を進めたり、タイマーを発生させたり、時間依存関数の動作を制御したりできます。詳細については、clock.run_for()とclock.fast_forward()を参照してください。
使用法
clock.install()
clock.install(**kwargs)
引数
戻り値
pause_at
追加されたバージョン: v1.45時間を飛び越えてクロックを進め、時間を一時停止します。このメソッドが呼び出されると、clock.run_for()、clock.fast_forward()、clock.pause_at()、またはclock.resume()が呼び出されない限り、タイマーは起動されません。
期限切れのタイマーは最大1回だけ発火します。これは、ユーザーがしばらくノートパソコンの蓋を閉めて、指定された時間に再び開いて一時停止するのと同等です。
使用法
- 同期
- 非同期
page.clock.pause_at(datetime.datetime(2020, 2, 2))
page.clock.pause_at("2020-02-02")
await page.clock.pause_at(datetime.datetime(2020, 2, 2))
await page.clock.pause_at("2020-02-02")
最良の結果を得るには、ページをナビゲートする前にクロックをインストールし、意図したテスト時間の少し前に設定します。これにより、ページ読み込み中にすべてのタイマーが正常に実行され、ページがフリーズするのを防ぎます。ページが完全に読み込まれたら、安全にclock.pause_at()を使用してクロックを一時停止できます。
- 同期
- 非同期
# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 12, 10, 8, 0, 0))
page.goto("https://:3333")
page.clock.pause_at(datetime.datetime(2024, 12, 10, 10, 0, 0))
# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
await page.clock.install(time=datetime.datetime(2024, 12, 10, 8, 0, 0))
await page.goto("https://:3333")
await page.clock.pause_at(datetime.datetime(2024, 12, 10, 10, 0, 0))
引数
戻り値
resume
追加されたバージョン: v1.45タイマーを再開します。このメソッドが呼び出されると、時間の流れが再開され、タイマーは通常通り発火します。
使用法
clock.resume()
戻り値
run_for
追加されたバージョン: v1.45クロックを進め、時間関連のすべてのコールバックを発火させます。
使用法
- 同期
- 非同期
page.clock.run_for(1000);
page.clock.run_for("30:00")
await page.clock.run_for(1000);
await page.clock.run_for("30:00")
引数
-
時間は、クロックを進めるミリ秒数、または人間が判読できる文字列のいずれかです。有効な文字列形式は、8秒の場合は「08」、1分の場合は「01:00」、2時間34分10秒の場合は「02:34:10」です。
戻り値
set_fixed_time
追加されたバージョン: v1.45Date.nowとnew Date()が常に固定された偽の時間を返し、すべてのタイマーを実行し続けます。
このメソッドは、事前定義された時間でテストするだけでよい単純なシナリオで使用します。より高度なシナリオでは、代わりにclock.install()を使用してください。クロックエミュレーションのドキュメントを読んで詳細を学びましょう。
使用法
- 同期
- 非同期
page.clock.set_fixed_time(datetime.datetime.now())
page.clock.set_fixed_time(datetime.datetime(2020, 2, 2))
page.clock.set_fixed_time("2020-02-02")
await page.clock.set_fixed_time(datetime.datetime.now())
await page.clock.set_fixed_time(datetime.datetime(2020, 2, 2))
await page.clock.set_fixed_time("2020-02-02")
引数
戻り値
set_system_time
追加されたバージョン: v1.45システム時間を設定しますが、タイマーはトリガーしません。これを使用して、夏時間から冬時間への切り替えやタイムゾーンの変更など、ウェブページが時間の変更にどのように反応するかをテストします。
使用法
- 同期
- 非同期
page.clock.set_system_time(datetime.datetime.now())
page.clock.set_system_time(datetime.datetime(2020, 2, 2))
page.clock.set_system_time("2020-02-02")
await page.clock.set_system_time(datetime.datetime.now())
await page.clock.set_system_time(datetime.datetime(2020, 2, 2))
await page.clock.set_system_time("2020-02-02")
引数
戻り値