Hoppa till huvudinnehåll

Klockobjektet

Du kan modifiera webbläsarens systemklocka med kommandot emulate. Det åsidosätter inbyggda globala funktioner relaterade till tid, vilket gör att de kan kontrolleras synkront via clock.tick() eller det genererade klockobjektet. Detta inkluderar kontroll av:

  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • Date Objects

Klockan startar vid unix-epoken (tidsstämpel 0). Detta innebär att när du skapar ett nytt Date-objekt i din applikation kommer det att ha tiden 1 januari 1970 om du inte skickar några andra alternativ till kommandot emulate.

Exempel

När du anropar browser.emulate('clock', { ... }) kommer det omedelbart att skriva över de globala funktionerna för den aktuella sidan samt alla följande sidor, t.ex.:

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

Du kan ändra systemtiden genom att anropa setSystemTime eller tick.

Welcome! How can I help?

WebdriverIO AI Copilot