【问题标题】:Set browser timezone in a Protractor test在量角器测试中设置浏览器时区
【发布时间】:2015-02-05 10:02:31
【问题描述】:
我正在做一个使用量角器进行 e2e 测试的项目。
一些测试,需要验证日期/时间。在我们的持续交付平台上进行测试,确保时区保持稳定。
但是,当测试在时区可能更改的本地计算机上运行时,测试会失败,因为捕获的浏览器在不同的时区运行。
我需要以某种方式通过量角器控制时区,以便进行独立于平台的测试。
这可能吗?
【问题讨论】:
标签:
javascript
selenium
protractor
angularjs-e2e
【解决方案1】:
迟到的答案,但也许将来有人可以使用它...有点难看,但我没有发现任何更漂亮的东西。它可能对您不起作用,这取决于您的应用程序如何检测时区。如果它与 getTimezoneOffset() 一起使用,这将起作用。
基本上它重写了 Date() 类,并在其中添加了 setTimezoneOffset()。
- 将 TimeShift.js 添加到您的助手中:https://github.com/cvakiitho/TimeShift-js/blob/master/timeshift.js
- 在您的测试中加载 TimeShift:
var TimeShift = require('./helpers/timeshift.js');
-
执行 TimeShift,并更改时区:
dvr = browser.driver;
dvr.executeScript(TimeShift).then(function(){
dvr.executeScript('' +
'angular.isDate = function(x){return x instanceof Date};' +
'Date = TimeShift.Date;' +
'TimeShift.setTimezoneOffset(60);' +
});
注意:每次页面刷新都会破坏这一点。