Node.js 重写执行脚本的日期构造函数
我正在尝试使用cucumber js自动化一些测试,其中一个依赖于调用new Date()的函数 我试着像这样执行脚本并覆盖日期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
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);
}
}());