2012-07-05 16 views
1

我使用Selenium(2.24)生成單元測試(適用於Visual Studio單元測試框架)。在使用C#WebDriver for FireFox時,驅動程序觸發的瀏覽器似乎沒有通過javascript找到我的網站cookie(我在網站中包含一個JavaScript文件,該文件查找cookie並讓我知道它們是否被發現)。此外,它不使用瀏覽器圖像緩存,並且始終從服務器請求新圖像。當我從「普通」(不是由Selenium啓動)FireFox運行我的網站時,這種行爲不會發生。Selenium Webdriver不尊重cookie或緩存的圖像

奇怪的是,調用下面的代碼在我的單元測試不會返回我的cookie(它只是不能由我的JavaScript中)

driver.Manage().Cookies.GetCookieNamed("MyCookie"); 

我如何配置驅動程序,尊重我的餅乾並使用瀏覽器圖像緩存?此功能是測試我的網站的關鍵。

回答

3

默認情況下,FirefoxDriver會在每次啓動Firefox時創建一個新的匿名配置文件。如果你想讓它使用一個退出的配置文件,你需要告訴它。

在Java中,你做它像這樣:

ProfilesIni allProfiles = new ProfilesIni(); 
FirefoxProfile profile = allProfiles.getProfile("MyProfile"); 
WebDriver driver = new FirefoxDriver(profile); 

我假設有一個在C#類似

+0

好的,這在C#驅動程序中幾乎是一樣的,除了它的'FirefoxProfileManager'而不是'ProfilesIni'。謝謝你的提示。這對cookie有效,但它似乎還沒有爲圖像使用瀏覽器緩存。我錯過了什麼? – EkoostikMartin 2012-07-06 15:56:30

+1

不知道緩存我很害怕。您可以嘗試手動啓動Firefox,然後通過webdriver.firefox.useExisting屬性將WebDriver附加到此目錄中。 http://code.google.com/p/selenium/wiki/FirefoxDriver我最好指出這不建議用於製作。 – 2012-07-06 16:05:42

+0

你有沒有運氣讓'webdriver.firefox.useExisting'工作?它似乎沒有做任何事情。如果可能的話,請提供它使用的源代碼片段。 – EkoostikMartin 2012-07-06 18:29:56

2

對於cookie:如果cookie被標記爲"HTTP Only"頁面上的JavaScript將無法看到它。因此,任何在頁面上使用JavaScript執行的代碼都不會看到這個特定的cookie。

您可以使用某些HTTP調試器(即Fiddler)來確認cookie是否使用HttpOnly屬性進行設置。您還可以檢查通過開發工具在頁面上運行腳本或在地址欄中輸入javascript:alert(...)可以看到Cookie(document.cookie

+0

的餅乾是不是隻允許HTTP,他們通過硒的webdriver的JavaScript的外面做工精細。 – EkoostikMartin 2012-07-05 22:14:45