Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 如何在Selenium Chromedriver中设置时区?_Javascript_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Javascript 如何在Selenium Chromedriver中设置时区?

Javascript 如何在Selenium Chromedriver中设置时区?,javascript,java,selenium,selenium-webdriver,selenium-chromedriver,Javascript,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,在使用Chromedriver时,我不知道如何设置时区。是不是有什么争论 问题是,当我访问某些站点时(例如),它显示的系统时间等于Windows上设置的时间。我希望能够以某种方式改变Chromedriver的时区,以执行时区相关测试 我尝试设置一些chrome选项: Map<String, Object> chromeOptions = new HashMap<String, Object>(); chromeOptions.put("args", A

在使用Chromedriver时,我不知道如何设置时区。是不是有什么争论

问题是,当我访问某些站点时(例如),它显示的系统时间等于Windows上设置的时间。我希望能够以某种方式改变Chromedriver的时区,以执行时区相关测试

我尝试设置一些chrome选项:

Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("args", Arrays.asList("--disable-system-timezone-automatic-detection", "--local-timezone"));
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
这也没用

编辑:

找到这个

尝试在页面上执行javascript,代码如下所示:

((JavascriptExecutor) driver).executeScript("/*code from TimeShift.js here*/ TimeShift.setTimezoneOffset(-60);");

在的系统时间没有更改。我做错了什么?

据我所知,您只能使用TZ变量或Decker Selenium执行此操作

然而,你能找到一个可行的解决方案吗?我正试图做同样的事情,但在解决问题的方法上却发现很少。我正试图用Python来做这件事。Tz变量解决方案仅限于windows中的Firefox,而decker selenium安装在windows上是一场噩梦

更新的PYTHON解决方案可行(如下)

操作系统环境[“德彪西”]=“1”

见:


我不确定是否有Java等价物,但这种Python等价物在windows中对我有效,但仅在Firefox中有效。如果你找到了一个Java等价物,那就太棒了,但是如果这个问题对你来说很重要的话,Python就是一条出路!:)。我相信您在windows中只能使用三个字母,但在Linux操作系统中可以完全自定义。例如UTC、GMT等,。希望这对你有帮助。我花了很长时间寻找这个,但结果我想得太多了。祝你好运

使用新的selenium 4,可以使用

下载以下maven依赖项:

      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0-alpha-6</version>
    </dependency>

org.seleniumhq.selenium

您可以通过使用Chrome DevTools协议来实现,下面是python代码:

driver = webdriver.Chrome()
tz_params = {'timezoneId': 'America/New_York'}
driver.execute_cdp_cmd('Emulation.setTimezoneOverride', tz_params)

它将始终显示Windows上设置的时间。更改Windows上的时间。也许这个类似的问题可以帮助你@Pv Viana解决这个问题。他正在从某个网站上抓取时区,然后他可以从网站的菜单中选择所需的时区。这是不同的。@ElliottFrisch我知道我可以在Windows上更改时间,甚至可以在java代码中更改时间:
Runtime.getRuntime().exec(“cmd/C time”+“16:56:10”)
但是这个选项对我不好,因为我想同时对Chromedriver的多个实例执行多线程测试,并且我希望每个实例都有自己的系统时间。请参阅:对SO的期望是,用户提问时不仅要研究回答他们自己的问题,还要分享研究结果,代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请看:不幸的是,我没有找到一种方法来做这件事,我和你有相同的信息。我想试试Docker,但我还没试过。我正在尝试用Java来实现它。如果我找到了一种方法,我会在这里分享。@Helen我更新了我的答案,有一种简单可行的方法可以用Python实现这一点。对于Java,我不知道怎么做。如果必须这样做,则必须通过命令行来完成。因此,在windows中,设置为:set TZ=UTC-4。然后你必须在设置好chromedriver后启动它。或者类似的事情不幸的是,我需要使用Chrome,而不是Firefox:),如果在Windows上运行,Chrome无法识别TZ变量。不过还是谢谢你@JayRen@Helen哦,对了,很抱歉,但据我所知,这在Windows上是无法实现的。Firefox是你的下一个赌注,因为它有更多的隐私选项。也许在Linux上是可能的。不太确定。我希望您能找到解决方案,这解决了我的问题。在docker中,您可以设置TZ变量:
docker run-d selenium/hub-e“TZ=US/Pacific”…
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0-alpha-6</version>
    </dependency>
driver = webdriver.Chrome()
tz_params = {'timezoneId': 'America/New_York'}
driver.execute_cdp_cmd('Emulation.setTimezoneOverride', tz_params)