メインコンテンツにスキップ

Clock

時間依存の動作を正確にシミュレートすることは、アプリケーションの正確性を検証するために不可欠です。クロックエミュレーションについて詳しくはこちらをご覧ください。

クロックはBrowserContext全体にインストールされるため、すべてのページおよびiframe内の時間は同じクロックによって制御されることに注意してください。


メソッド

fast_forward

追加バージョン: v1.45 clock.fast_forward

時間を早送りしてクロックを進めます。期限切れのタイマーは最大1回のみ発火します。これは、ユーザーがしばらくノートパソコンの蓋を閉じて、指定された時間後に再び開くのと同等です。

使用方法

page.clock.fast_forward(1000)
page.clock.fast_forward("30:00")

引数

  • ticks int | str#

    時間は、クロックを進めるミリ秒数、または人間が読める文字列で指定できます。有効な文字列形式は、8秒の場合は「08」、1分間は「01:00」、2時間34分10秒は「02:34:10」です。

戻り値


install

追加バージョン: v1.45 clock.install

以下の時間関連関数の偽の実装をインストールします

  • Date
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • performance

偽のタイマーは、テストの時間フローを手動で制御するために使用されます。これにより、時間を進めたり、タイマーを発火させたり、時間依存関数の動作を制御したりできます。詳細については、clock.run_for() および clock.fast_forward() を参照してください。

使用方法

clock.install()
clock.install(**kwargs)

引数

  • time float | str | datetime (オプション)#

    初期化する時刻。デフォルトは現在のシステム時刻です。

戻り値


pause_at

追加バージョン: v1.45 clock.pause_at

クロックを時間的にジャンプさせて進め、時間を一時停止します。このメソッドが呼び出されると、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")

最良の結果を得るには、ページをナビゲートする前にクロックをインストールし、意図するテスト時刻より少し前の時刻に設定します。これにより、ページ読み込み中にすべてのタイマーが正常に動作し、ページが停止するのを防ぎます。ページが完全に読み込まれたら、安全に 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))

引数

戻り値


resume

追加バージョン: v1.45 clock.resume

タイマーを再開します。このメソッドが呼び出されると、時間が流れ始め、タイマーは通常通り発火します。

使用方法

clock.resume()

戻り値


run_for

追加バージョン: v1.45 clock.run_for

クロックを進め、すべての時間関連のコールバックを発火させます。

使用方法

page.clock.run_for(1000);
page.clock.run_for("30:00")

引数

  • ticks int | str#

    時間は、クロックを進めるミリ秒数、または人間が読める文字列で指定できます。有効な文字列形式は、8秒の場合は「08」、1分間は「01:00」、2時間34分10秒は「02:34:10」です。

戻り値


set_fixed_time

追加バージョン: v1.45 clock.set_fixed_time

Date.nownew 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")

引数

戻り値


set_system_time

追加バージョン: v1.45 clock.set_system_time

システム時刻を設定しますが、タイマーは一切トリガーしません。夏時間から冬時間への切り替え、またはタイムゾーンの変更など、ウェブページが時間シフトにどのように反応するかをテストするために使用します。

使用方法

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")

引数

戻り値