【问题标题】:Set browser timezone in a Protractor test在量角器测试中设置浏览器时区
【发布时间】:2015-02-05 10:02:31
【问题描述】:

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

一些测试,需要验证日期/时间。在我们的持续交付平台上进行测试,确保时区保持稳定。

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

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

这可能吗?

【问题讨论】:

  • 您是否尝试过 MomentJS (momentjs.com) 和 moment-timezone momentjs.com/timezone 当我需要确保远程服务器显示的时间根据时区正确时,我在测试中使用它在运行 selenium 的机器上,如果这不能满足您的要求,可能还有其他软件包

标签: javascript selenium protractor angularjs-e2e


【解决方案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);' +
        });
    

注意:每次页面刷新都会破坏这一点。

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 2017-12-03
    • 2017-05-20
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多