在Protractor测试中设置浏览器时区

时间:2015-02-05 10:02:32

标签: javascript selenium protractor angularjs-e2e

我正在开发一个使用量角器进行e2e测试的项目。

有些测试需要验证日期/时间。我们的持续交付平台可以确保时区保持稳定。

但是,当测试在本地计算机上运行时,时区可能会发生变化,测试失败,因为捕获的浏览器在不同的时区运行。

我需要以某种方式通过量角器控制时区,以便进行独立于平台的测试。

这可能吗?

1 个答案:

答案 0 :(得分:1)

迟到的答案,但未来也许有人可以使用它...它有点难看,但我找不到更漂亮的东西。它可能不适合你,这取决于你的应用程序如何检测时区。如果是getTimezoneOffset(),这将有效。

基本上它会重写Date()类,并为其添加setTimezoneOffset()。

  1. 将TimeShift.js添加到助手中:https://github.com/cvakiitho/TimeShift-js/blob/master/timeshift.js
  2. 在测试中加载TimeShift:var TimeShift = require('./helpers/timeshift.js');
  3. 执行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);' +
        });
    
  4. 注意:每次刷新页面都会破坏它。