2016-09-27 82 views
1

已解決。我的baseURL錯了。然後它將轉到其他網站,將其重定向到正確網站的基本網址。謝謝。Selenium Webdriver - driver.get()在插入變量時無法正常工作

我有一個問題,使用driver.get()裏面的一個變量。例如:

driver.get(baseURL+othervariable); 

當我執行它時,瀏覽器會自動轉到baseURL。

我在該行之前添加了一個控制檯打印,以確保級聯是確定的,如:

System.out.println(baseURL+othervariable); 
driver.get(baseURL+othervariable); 

而且我可以在級聯是確定控制檯中看到。

奇怪的是,如果我直接將URL沒有基本的URL,如:

driver.get("http://examplesite.com/subsection"); 

它的工作原理。

爲什麼我會遇到這個問題?因爲我使用for循環來打開我需要檢查的URL數組。

所以我的程序的結構是這樣的:

for (i=0 ; i<URLs.lenght ; i++) { 
driver.get(baseURL + URLs[i]); 
// then do some stuff 
} 
單獨

但總是瀏覽器中打開基本URL。

奇怪的是,在本網站的較低環境中執行此操作時,我沒有任何問題。 Live站點出現問題。

難道網站上的某些配置阻止Selenium進入所需的URL嗎?

但是,我不明白爲什麼當我直接將URL作爲字符串插入到driver.get()中時,它即使在活動站點中也按預期工作。

所以問題是當我在裏面插入一個變量,並且只在現場。

我完全困惑。我嘗試過Firefox驅動程序,Chrome驅動程序等。所有這些都是一樣的。

我也試過:

String finalURL = baseURL+URLs[i]; 
driver.get(finalURL); 

,拒不打開完整的URL。我在許多測試中從未遇到過這個問題。很多時候我執行了driver.get()裏面的變量和連接,我從來沒有遇到過這個問題。

有人能給我一個提示嗎?爲什麼只有在將URL作爲變量發送時纔會出現此問題,而不是在將它作爲字符串發送時纔會出現?

我使用Selenium 3.0 btw。

感謝您的幫助。

+0

你試過寫隱式等待/顯式等待嗎? –

+0

在這種情況下,我的意圖是編寫navigate()。to()是有用的,而不是get()。如果仍然問題再現,那麼你可以添加隱含的等待,然後調用url –

+0

你試圖打印finalUrl之前,你把它放進adres?它看起來像什麼? – SkorpEN

回答

0

嘗試確保URLs語法(特別是\和//) 對於某些網站,不正確的URL會重定向到baseURL頁面。 如果您正在開發一個AngularJS項目,您可能需要一些等待(嘗試ngWebDriver) 祝您好運!

+0

經過兩天的努力,結果發現我的baseURL變量拼寫錯誤,實際上轉到另一個網站。但是「其他網站」有重定向規則,並將我重定向到正確網站的基本網址。問題不是/或\,問題更加簡單。 – Max

+0

問題解決:我們都與這個男人鬥爭,我們尋找困難的答案,反正!祝你好運 ! :) –