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

Set browser timezone in a Protractor test

本文关键字:浏览器 时区 设置 Protractor 测试      更新时间:2023-09-26

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

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

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

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

这可能吗?

答案很晚,但也许将来会有人使用这个。。。它有点丑,但我没有发现比它更漂亮的了。它可能不适合你,这取决于你的应用程序如何检测时区。如果使用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);' +
        });
    

注意:每次刷新页面都会破坏此功能。