Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在量角器测试中设置浏览器时区_Javascript_Selenium_Protractor_Angularjs E2e - Fatal编程技术网

Javascript 在量角器测试中设置浏览器时区

Javascript 在量角器测试中设置浏览器时区,javascript,selenium,protractor,angularjs-e2e,Javascript,Selenium,Protractor,Angularjs E2e,我正在做一个项目,e2e测试是用量角器进行的 有些测试需要验证日期/时间。在我们的持续交付平台上测试正常,确保时区保持稳定 但是,当测试在本地计算机上运行时,时区可能会发生变化,测试会失败,因为捕获的浏览器正在不同的时区上运行 我需要,不知何故,通过量角器控制时区,以便进行独立于平台的测试 这可能吗?回答晚了,但也许将来会有人使用它……它有点难看,但我还没有发现比它更漂亮的东西。它可能不适合你,这取决于你的应用程序如何检测时区。如果是使用getTimezoneOffset(),这将起作用 基本上

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

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

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

我需要,不知何故,通过量角器控制时区,以便进行独立于平台的测试


这可能吗?

回答晚了,但也许将来会有人使用它……它有点难看,但我还没有发现比它更漂亮的东西。它可能不适合你,这取决于你的应用程序如何检测时区。如果是使用getTimezoneOffset(),这将起作用

基本上,它重写Date()类,并向其中添加setTimezoneOffset()

  • 将TimeShift.js添加到助手中:
  • 在测试中加载TimeShift:
    var TimeShift=require('./helpers/TimeShift.js')
  • 执行时间移位,并更改时区:

    dvr = browser.driver;
    dvr.executeScript(TimeShift).then(function(){
            dvr.executeScript('' +
                'angular.isDate = function(x){return x instanceof Date};' +
                'Date = TimeShift.Date;' +
                'TimeShift.setTimezoneOffset(60);' +
        });
    
  • 注意:每次页面刷新都会破坏这一点。

    您是否尝试过MomentJS()和MomentTimeZone?当我需要确保远程服务器显示的时间根据selenium运行的机器上的时区是正确的时,我在测试中使用了它。如果这不符合您的要求,可能还有其他软件包