2017-06-22 100 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

相關問題