2017-06-22 102 views
3

我不知道如何设置使用Chromedriver时区。是否有一些ChromeOptions参数或什么?我到处搜索,没有找到。如何在Selenium Chromedriver中设置时区?

问题是,当我去一些网站(例如,https://whoer.net)时,它显示的系统时间等于在Windows上设置的时间。我希望能够以某种方式改变Chromedriver的时区来执行时区相关测试。

我试图设置一些浏览器选项:

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("Date.prototype.getTime = function() { return 1 };"); 

它没有帮助。

编辑:

发现这个https://sqa.stackexchange.com/questions/8838/faking-system-time-date-with-selenium-webdriver

试过从TimeShift.js复制这样的代码页上执行JavaScript的:在https://whoer.net

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

系统时间没有改变。我究竟做错了什么?

+0

它将始终显示在Windows上设置的时间。在Windows上更改时间。 –

+0

也许这个类似的问题可以帮你https://stackoverflow.com/questions/35848043/selenium-scraping-changing-timezone –

+0

@ Pv-Viana在这个问题,他是从一些网站刮一个时区,然后他可以选择所需时区来自网站的菜单。这不一样。 – Helen

回答

1

据我所知,你只能用TZ变量或Decker Selen做这个。

然而,你能找到一个可行的解决方案吗?我试图做同样的事情,并且发现解决方案的方法很少。我正在试图用Python来做。 Tz变量解决方案仅限于Windows中的Firefox,而Decker Selenium是安装在Windows上的噩梦。

修订PYTHON解活力的(下文)

os.environ [ “DEBUSSY”] = “1”

SEE:How to set environment variables in Python

我不能肯定是否有一个Java等效但是这个Python等价物在Windows中为我工作,但只在Firefox中。如果你找到了一个相当于Java的东西,那真是太棒了,但是如果这个问题对你来说很重要,那么Python就是要走了! :)。我相信你只能在windows中使用三个字母,但在Linux操作系统中完全自定义。例如UTC,GMT等等。希望这对你有帮助。我花了很多年寻找这个,但事实证明我正在反思它。祝你好运!!

+0

不幸的是,我没有找到办法做到这一点,我有和你一样的信息。我正在考虑尝试Docker,但我还没有尝试过。我试图用Java来做。如果我找到方法,我会在这里分享。 – Helen

+0

@Helen Ive更新了我的答案,有一个简单可行的方法可以用Python来做到这一点。对于Java,我不知道如何。如果你必须这样做,你必须通过命令行来完成。所以在Windows中,它将是:设置TZ = UTC-4。然后,你必须在设置后启动chromedriver。或类似的东西。 :) – 2017-09-08 07:52:55

+0

不幸的是,我需要使用Chrome,而不是Firefox :)并且如果您在Windows上运行它,Chrome无法识别TZ变量。但无论如何谢谢@JayRen – Helen

相关问题