Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 重写执行脚本的日期构造函数_Node.js_Selenium_Selenium Webdriver - Fatal编程技术网

Node.js 重写执行脚本的日期构造函数

Node.js 重写执行脚本的日期构造函数,node.js,selenium,selenium-webdriver,Node.js,Selenium,Selenium Webdriver,我正在尝试使用cucumber js自动化一些测试,其中一个依赖于调用new Date()的函数 我试着像这样执行脚本并覆盖日期 const driver = (this.driver as ThenableWebDriver); await driver.get(`http://localhost:5000/`); await driver.executeScript(` var d = new Date(2012,0,20); Dat

我正在尝试使用cucumber js自动化一些测试,其中一个依赖于调用new Date()的函数

我试着像这样执行脚本并覆盖日期

    const driver = (this.driver as ThenableWebDriver); 
    await driver.get(`http://localhost:5000/`);
    await driver.executeScript(`
        var d = new Date(2012,0,20);
        Date = function(){return d;}
    `);   
如果我再次使用调用executeScript函数

await driver.executeScript(`
        alert(new Date()) // returns the date i set
    `);
新日期返回正确。 但当我模拟单击时,onClick会生成一个新的日期(),它会获取本地日期,而不是我设置的日期

有小费吗? 提前谢谢

[编辑]在这里看到:


但还是没有运气。executeScript在哪里运行

要覆盖构造函数
日期

wait driver.executeScript(`
var Date=function(){//new构造函数
返回新窗口.日期.原型.构造函数(2013,6,14);
}
Date.prototype=window.Date.prototype;//从Date继承方法
Date.now=Date;//覆盖Date.now()
Date.UTC=Date.prototype.constructor.UTC;//复制Date.UTC(…)
Date.parse=Date.prototype.constructor.parse;//复制Date.parse(…)
window.Date=Date;//覆盖日期
`); 

我对onclick回调进行了编码,我明确地调用了new Date()
var Date = (function() {
 var OldDate = Date;
 return function (){
 return new OldDate(2012,0,20);
 } 
}());