本文へスキップ

クロックオブジェクト

emulateコマンドを使用して、ブラウザのシステムクロックを変更できます。これは、時間に関するネイティブのグローバル関数をオーバーライドし、clock.tick()またはyieldされたクロックオブジェクトを介して同期的に制御できるようにします。これには、以下の制御が含まれます。

  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • Dateオブジェクト

クロックはUNIXエポック(タイムスタンプ0)から始まります。つまり、アプリケーションで新しいDateをインスタンス化すると、emulateコマンドに他のオプションを渡さない限り、1970年1月1日の時刻になります。

browser.emulate('clock', { ... })を呼び出すと、現在のページとそれに続くすべてのページのグローバル関数がすぐに上書きされます。

const clock = await browser.emulate('clock', { now: new Date(1989, 7, 4) })

console.log(await browser.execute(() => (new Date()).toString()))
// returns "Fri Aug 04 1989 00:00:00 GMT-0700 (Pacific Daylight Time)"

await browser.url('https://webdriverio')
console.log(await browser.execute(() => (new Date()).toString()))
// returns "Fri Aug 04 1989 00:00:00 GMT-0700 (Pacific Daylight Time)"

await clock.restore()

console.log(await browser.execute(() => (new Date()).toString()))
// returns "Thu Aug 01 2024 17:59:59 GMT-0700 (Pacific Daylight Time)"

await browser.url('http://guinea-pig.webdriver.io/pointer.html')
console.log(await browser.execute(() => (new Date()).toString()))
// returns "Thu Aug 01 2024 17:59:59 GMT-0700 (Pacific Daylight Time)"

setSystemTimeまたはtickを呼び出すことで、システム時刻を変更できます。

ようこそ!お手伝いしましょうか?

WebdriverIO AI Copilot