我可以为剧作家浏览器设置日期吗

Posted

技术标签:

【中文标题】我可以为剧作家浏览器设置日期吗【英文标题】:Can I set the date for playwright browser 【发布时间】:2021-01-05 16:13:28 【问题描述】:

当我编写测试以在 playwright 中运行时,我希望能够设置浏览器认为它在测试开始时的日期。有没有办法使用剧作家来实现这一点?

【问题讨论】:

【参考方案1】:

更简单的解决方案

    page.evaluate(() => 
      Date.now = () => 
        return 1609477200000; //Jan 1, 2021
      ;
    );

【讨论】:

如果代码调用new Date(),这将无济于事【参考方案2】:

您可以使用 TimeShift 等模拟工具。 这段代码将注入 timeshift 库,然后将日期注入Feb 02 2012

const playwright = require("playwright");

(async () => 

    let removed = false;
    const browser = await playwright["chromium"].launch(headless: false);
    const page = await browser.newPage();
    await page.setContent('<a href="#" onclick="document.querySelector(\'span\').innerText = new Date().toString()">Test me</a><span></span>');
    await page.click('a');
    console.log(await page.innerText('span'));
    await page.addScriptTag( url: 'https://cdn.jsdelivr.net/npm/timeshift-js@1.1.1/timeshift.js');
    await page.evaluate(() => 
        Date = TimeShift.Date; 
        TimeShift.setTime(1328230923000); 
    );
    await page.click('a');
    console.log(await page.innerText('span'));
    browser.close();
)();

输出:

Fri Sep 18 2020 15:06:58 GMT-0300 (Argentina Standard Time)
Thu Feb 02 2012 22:02:03 GMT-0300

【讨论】:

以上是关于我可以为剧作家浏览器设置日期吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在HTTP headers设置有效日期?这个指的是在服务器上或者网页中加入的吗?怎么设置?求解

pyqt 设置浏览器时区

在Safari中解析时,日期显示为null

如何为一个网站主页可以设置多个可以切换的主题吗

浏览网页:出现错误,无法设置属性“value”的值:对象为null或未定义

在剧作家的第一个浏览器实例之后保持登录会话